feat: implement chrome.tabs.reload (#33560)
This commit is contained in:
parent
a7a5e7fcfd
commit
caddc83cfe
4 changed files with 59 additions and 3 deletions
|
@ -99,6 +99,7 @@ Only `chrome.storage.local` is supported; `chrome.storage.sync` and
|
||||||
The following methods of `chrome.tabs` are supported:
|
The following methods of `chrome.tabs` are supported:
|
||||||
|
|
||||||
- `chrome.tabs.sendMessage`
|
- `chrome.tabs.sendMessage`
|
||||||
|
- `chrome.tabs.reload`
|
||||||
- `chrome.tabs.executeScript`
|
- `chrome.tabs.executeScript`
|
||||||
- `chrome.tabs.update` (partial support)
|
- `chrome.tabs.update` (partial support)
|
||||||
- supported properties: `url`, `muted`.
|
- supported properties: `url`, `muted`.
|
||||||
|
|
|
@ -182,6 +182,30 @@ bool TabsExecuteScriptFunction::ShouldRemoveCSS() const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ExtensionFunction::ResponseAction TabsReloadFunction::Run() {
|
||||||
|
std::unique_ptr<tabs::Reload::Params> params(
|
||||||
|
tabs::Reload::Params::Create(args()));
|
||||||
|
EXTENSION_FUNCTION_VALIDATE(params.get());
|
||||||
|
|
||||||
|
bool bypass_cache = false;
|
||||||
|
if (params->reload_properties.get() &&
|
||||||
|
params->reload_properties->bypass_cache.get()) {
|
||||||
|
bypass_cache = *params->reload_properties->bypass_cache;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tab_id = params->tab_id ? *params->tab_id : -1;
|
||||||
|
auto* contents = electron::api::WebContents::FromID(tab_id);
|
||||||
|
if (!contents)
|
||||||
|
return RespondNow(Error("No such tab"));
|
||||||
|
|
||||||
|
contents->web_contents()->GetController().Reload(
|
||||||
|
bypass_cache ? content::ReloadType::BYPASSING_CACHE
|
||||||
|
: content::ReloadType::NORMAL,
|
||||||
|
true);
|
||||||
|
|
||||||
|
return RespondNow(NoArguments());
|
||||||
|
}
|
||||||
|
|
||||||
ExtensionFunction::ResponseAction TabsGetFunction::Run() {
|
ExtensionFunction::ResponseAction TabsGetFunction::Run() {
|
||||||
std::unique_ptr<tabs::Get::Params> params(tabs::Get::Params::Create(args()));
|
std::unique_ptr<tabs::Get::Params> params(tabs::Get::Params::Create(args()));
|
||||||
EXTENSION_FUNCTION_VALIDATE(params.get());
|
EXTENSION_FUNCTION_VALIDATE(params.get());
|
||||||
|
@ -262,17 +286,17 @@ ExtensionFunction::ResponseAction TabsGetZoomSettingsFunction::Run() {
|
||||||
auto* zoom_controller = contents->GetZoomController();
|
auto* zoom_controller = contents->GetZoomController();
|
||||||
WebContentsZoomController::ZoomMode zoom_mode =
|
WebContentsZoomController::ZoomMode zoom_mode =
|
||||||
contents->GetZoomController()->zoom_mode();
|
contents->GetZoomController()->zoom_mode();
|
||||||
api::tabs::ZoomSettings zoom_settings;
|
tabs::ZoomSettings zoom_settings;
|
||||||
ZoomModeToZoomSettings(zoom_mode, &zoom_settings);
|
ZoomModeToZoomSettings(zoom_mode, &zoom_settings);
|
||||||
zoom_settings.default_zoom_factor = std::make_unique<double>(
|
zoom_settings.default_zoom_factor = std::make_unique<double>(
|
||||||
blink::PageZoomLevelToZoomFactor(zoom_controller->GetDefaultZoomLevel()));
|
blink::PageZoomLevelToZoomFactor(zoom_controller->GetDefaultZoomLevel()));
|
||||||
|
|
||||||
return RespondNow(
|
return RespondNow(
|
||||||
ArgumentList(api::tabs::GetZoomSettings::Results::Create(zoom_settings)));
|
ArgumentList(tabs::GetZoomSettings::Results::Create(zoom_settings)));
|
||||||
}
|
}
|
||||||
|
|
||||||
ExtensionFunction::ResponseAction TabsSetZoomSettingsFunction::Run() {
|
ExtensionFunction::ResponseAction TabsSetZoomSettingsFunction::Run() {
|
||||||
using api::tabs::ZoomSettings;
|
using tabs::ZoomSettings;
|
||||||
|
|
||||||
std::unique_ptr<tabs::SetZoomSettings::Params> params(
|
std::unique_ptr<tabs::SetZoomSettings::Params> params(
|
||||||
tabs::SetZoomSettings::Params::Create(args()));
|
tabs::SetZoomSettings::Params::Create(args()));
|
||||||
|
|
|
@ -46,9 +46,19 @@ class TabsExecuteScriptFunction : public ExecuteCodeInTabFunction {
|
||||||
DECLARE_EXTENSION_FUNCTION("tabs.executeScript", TABS_EXECUTESCRIPT)
|
DECLARE_EXTENSION_FUNCTION("tabs.executeScript", TABS_EXECUTESCRIPT)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TabsReloadFunction : public ExtensionFunction {
|
||||||
|
~TabsReloadFunction() override {}
|
||||||
|
|
||||||
|
ResponseAction Run() override;
|
||||||
|
|
||||||
|
DECLARE_EXTENSION_FUNCTION("tabs.reload", TABS_RELOAD)
|
||||||
|
};
|
||||||
|
|
||||||
class TabsGetFunction : public ExtensionFunction {
|
class TabsGetFunction : public ExtensionFunction {
|
||||||
~TabsGetFunction() override {}
|
~TabsGetFunction() override {}
|
||||||
|
|
||||||
ResponseAction Run() override;
|
ResponseAction Run() override;
|
||||||
|
|
||||||
DECLARE_EXTENSION_FUNCTION("tabs.get", TABS_GET)
|
DECLARE_EXTENSION_FUNCTION("tabs.get", TABS_GET)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -120,6 +120,27 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"functions": [
|
"functions": [
|
||||||
|
{
|
||||||
|
"name": "reload",
|
||||||
|
"type": "function",
|
||||||
|
"description": "Reload a tab.",
|
||||||
|
"parameters": [
|
||||||
|
{"type": "integer", "name": "tabId", "minimum": 0, "optional": true, "description": "The ID of the tab to reload; defaults to the selected tab of the current window."},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"name": "reloadProperties",
|
||||||
|
"optional": true,
|
||||||
|
"properties": {
|
||||||
|
"bypassCache": {
|
||||||
|
"type": "boolean",
|
||||||
|
"optional": true,
|
||||||
|
"description": "Whether using any local cache. Default is false."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{"type": "function", "name": "callback", "optional": true, "parameters": []}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "get",
|
"name": "get",
|
||||||
"type": "function",
|
"type": "function",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue