fix: chrome.tabs.update
return value (#39365)
fix: chrome.tabs.update return value
This commit is contained in:
parent
330c775252
commit
67523a47b4
4 changed files with 43 additions and 0 deletions
|
@ -57,6 +57,14 @@ void ZoomModeToZoomSettings(WebContentsZoomController::ZoomMode zoom_mode,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
api::tabs::MutedInfo CreateMutedInfo(content::WebContents* contents) {
|
||||||
|
DCHECK(contents);
|
||||||
|
api::tabs::MutedInfo info;
|
||||||
|
info.muted = contents->IsAudioMuted();
|
||||||
|
info.reason = api::tabs::MUTED_INFO_REASON_USER;
|
||||||
|
return info;
|
||||||
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
ExecuteCodeInTabFunction::ExecuteCodeInTabFunction() : execute_tab_id_(-1) {}
|
ExecuteCodeInTabFunction::ExecuteCodeInTabFunction() : execute_tab_id_(-1) {}
|
||||||
|
@ -502,11 +510,17 @@ ExtensionFunction::ResponseValue TabsUpdateFunction::GetResult() {
|
||||||
|
|
||||||
auto* api_web_contents = electron::api::WebContents::From(web_contents_);
|
auto* api_web_contents = electron::api::WebContents::From(web_contents_);
|
||||||
tab.id = (api_web_contents ? api_web_contents->ID() : -1);
|
tab.id = (api_web_contents ? api_web_contents->ID() : -1);
|
||||||
|
|
||||||
// TODO(nornagon): in Chrome, the tab URL is only available to extensions
|
// TODO(nornagon): in Chrome, the tab URL is only available to extensions
|
||||||
// that have the "tabs" (or "activeTab") permission. We should do the same
|
// that have the "tabs" (or "activeTab") permission. We should do the same
|
||||||
// permission check here.
|
// permission check here.
|
||||||
tab.url = web_contents_->GetLastCommittedURL().spec();
|
tab.url = web_contents_->GetLastCommittedURL().spec();
|
||||||
|
|
||||||
|
if (api_web_contents)
|
||||||
|
tab.active = api_web_contents->IsFocused();
|
||||||
|
tab.muted_info = CreateMutedInfo(web_contents_);
|
||||||
|
tab.audible = web_contents_->IsCurrentlyAudible();
|
||||||
|
|
||||||
return ArgumentList(tabs::Get::Results::Create(std::move(tab)));
|
return ArgumentList(tabs::Get::Results::Create(std::move(tab)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -950,6 +950,23 @@ describe('chrome extensions', () => {
|
||||||
expect(response.status).to.equal('reloaded');
|
expect(response.status).to.equal('reloaded');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('update', async () => {
|
||||||
|
await w.loadURL(url);
|
||||||
|
|
||||||
|
const message = { method: 'update', args: [{ muted: true }] };
|
||||||
|
w.webContents.executeJavaScript(`window.postMessage('${JSON.stringify(message)}', '*')`);
|
||||||
|
|
||||||
|
const [,, responseString] = await once(w.webContents, 'console-message');
|
||||||
|
const response = JSON.parse(responseString);
|
||||||
|
|
||||||
|
expect(response).to.have.property('mutedInfo').that.is.a('object');
|
||||||
|
const { mutedInfo } = response;
|
||||||
|
expect(mutedInfo).to.deep.eq({
|
||||||
|
muted: true,
|
||||||
|
reason: 'user'
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -42,6 +42,13 @@ const handleRequest = (request, sender, sendResponse) => {
|
||||||
chrome.tabs.reload(tabId).then(() => {
|
chrome.tabs.reload(tabId).then(() => {
|
||||||
sendResponse({ status: 'reloaded' });
|
sendResponse({ status: 'reloaded' });
|
||||||
});
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'update': {
|
||||||
|
const [params] = args;
|
||||||
|
chrome.tabs.update(tabId, params).then(sendResponse);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -34,6 +34,11 @@ const testMap = {
|
||||||
chrome.runtime.sendMessage({ method: 'reload' }, response => {
|
chrome.runtime.sendMessage({ method: 'reload' }, response => {
|
||||||
console.log(JSON.stringify(response));
|
console.log(JSON.stringify(response));
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
update (params) {
|
||||||
|
chrome.runtime.sendMessage({ method: 'update', args: [params] }, response => {
|
||||||
|
console.log(JSON.stringify(response));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue