Chromeのinfo.selectionTextは改行がスペースに変換されることに今日気づきました。
なんで今まで自分の作ってた拡張が動いてたのかがマジで謎いです。
選択したテキストの改行まで欲しい場合は、残念ながらchrome.tabs.sendMessageでタブにメッセージを送って、content script上でsendResponse({stext: window.getSelection().toString()});するしかないようですね。
メッセージパッシング、非同期処理になっちゃうのと、権限が更に必要になっちゃうのであんまりやりたくないんですが、仕方なくコールバックメソッドの中にレスポンスを受け取った後の処理を全部書きました。
以下、処理の抜粋です。
background.js
var res = function (response) {
var stext = response.stext; //改行も含めたテキスト
(中略);
// content scriptにメッセージを送る
chrome.tabs.sendMessage(tab.id, {
message: "hello"
}, res);
content.js
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
sendResponse({stext: window.getSelection().toString()});
}
);