diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-05-17 17:24:03 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-06-22 07:51:41 +0000 |
commit | 774f54339e5db91f785733232d3950366db65d07 (patch) | |
tree | 068e1b47bd1af94d77094ed12b604a6b83d9c22a /chromium/chrome/browser/extensions/api/extension_action | |
parent | f7eaed5286974984ba5f9e3189d8f49d03e99f81 (diff) |
BASELINE: Update Chromium to 102.0.5005.57
Change-Id: I885f714bb40ee724c28f94ca6bd8dbdb39915158
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chrome/browser/extensions/api/extension_action')
4 files changed, 22 insertions, 46 deletions
diff --git a/chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc b/chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc index cca00675ee2..f91b946d60d 100644 --- a/chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc +++ b/chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc @@ -4,6 +4,7 @@ #include <memory> +#include "base/files/file_util.h" #include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/scoped_observation.h" @@ -628,7 +629,7 @@ IN_PROC_BROWSER_TEST_F(BrowserActionInteractiveTest, MAYBE_BrowserActionPopup) { // from setting and storing the size for the next iteration, resulting in test // flakiness. const gfx::Size kExpectedSizes[] = {maxSize, middleSize, minSize}; - for (size_t i = 0; i < base::size(kExpectedSizes); i++) { + for (size_t i = 0; i < std::size(kExpectedSizes); i++) { content::WebContentsAddedObserver popup_observer; actions_bar->Press(extension->id()); content::WebContents* popup = popup_observer.GetWebContents(); diff --git a/chromium/chrome/browser/extensions/api/extension_action/extension_action_api.cc b/chromium/chrome/browser/extensions/api/extension_action/extension_action_api.cc index 2ea6ab9abce..84929283b8b 100644 --- a/chromium/chrome/browser/extensions/api/extension_action/extension_action_api.cc +++ b/chromium/chrome/browser/extensions/api/extension_action/extension_action_api.cc @@ -5,15 +5,16 @@ #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" #include <stddef.h> + #include <memory> #include <utility> #include "base/bind.h" -#include "base/cxx17_backports.h" #include "base/lazy_instance.h" #include "base/location.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" +#include "base/observer_list.h" #include "base/strings/string_number_conversions.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" @@ -119,19 +120,20 @@ bool OpenPopupInBrowser(Browser& browser, const Extension& extension, std::string* error, ShowPopupCallback callback) { - if (!browser.window()->IsToolbarVisible()) { + if (!browser.SupportsWindowFeature(Browser::FEATURE_TOOLBAR) || + !browser.window()->IsToolbarVisible()) { *error = "Browser window has no toolbar."; return false; } - if (!ExtensionActionAPI::Get(browser.profile()) - ->ShowExtensionActionPopupForAPICall(&extension, &browser, - std::move(callback))) { - // NOTE(devlin): We could have the callback pass more information here about - // why the popup didn't open (e.g., another active popup vs popup closing - // before display, as may happen if the window closes), but it's not clear - // whether that would be significantly helpful to developers and it may - // leak other information about the user's browser. + ExtensionsContainer* extensions_container = + browser.window()->GetExtensionsContainer(); + // The ExtensionsContainer could be null if, e.g., this is a popup window with + // no toolbar. + // TODO(devlin): Is that still possible, given the checks above? + if (!extensions_container || + !extensions_container->ShowToolbarActionPopupForAPICall( + extension.id(), std::move(callback))) { *error = kFailedToOpenPopupGenericError; return false; } @@ -189,29 +191,6 @@ void ExtensionActionAPI::RemoveObserver(Observer* observer) { observers_.RemoveObserver(observer); } -bool ExtensionActionAPI::ShowExtensionActionPopupForAPICall( - const Extension* extension, - Browser* browser, - ShowPopupCallback callback) { - ExtensionAction* extension_action = - ExtensionActionManager::Get(browser_context_)->GetExtensionAction( - *extension); - if (!extension_action) - return false; - - // Don't support showing action popups in a popup window. - if (!browser->SupportsWindowFeature(Browser::FEATURE_TOOLBAR)) - return false; - - ExtensionsContainer* extensions_container = - browser->window()->GetExtensionsContainer(); - // The ExtensionsContainer could be null if, e.g., this is a popup window with - // no toolbar. - return extensions_container && - extensions_container->ShowToolbarActionPopupForAPICall( - extension->id(), std::move(callback)); -} - void ExtensionActionAPI::NotifyChange(ExtensionAction* extension_action, content::WebContents* web_contents, content::BrowserContext* context) { @@ -554,7 +533,7 @@ ExtensionActionSetBadgeBackgroundColorFunction::RunExtensionAction() { EXTENSION_FUNCTION_VALIDATE(list.size() == 4); int color_array[4] = {0}; - for (size_t i = 0; i < base::size(color_array); ++i) { + for (size_t i = 0; i < std::size(color_array); ++i) { EXTENSION_FUNCTION_VALIDATE(list[i].is_int()); color_array[i] = list[i].GetInt(); } @@ -713,6 +692,11 @@ void ActionOpenPopupFunction::OnShowPopupComplete(ExtensionHost* popup_host) { DCHECK(popup_host->document_element_available()); response_value = NoArguments(); } else { + // NOTE(devlin): We could have the callback pass more information here about + // why the popup didn't open (e.g., another active popup vs popup closing + // before display, as may happen if the window closes), but it's not clear + // whether that would be significantly helpful to developers and it may + // leak other information about the user's browser. response_value = Error(kFailedToOpenPopupGenericError); } diff --git a/chromium/chrome/browser/extensions/api/extension_action/extension_action_api.h b/chromium/chrome/browser/extensions/api/extension_action/extension_action_api.h index b5589c3caa2..77ef7fa1a75 100644 --- a/chromium/chrome/browser/extensions/api/extension_action/extension_action_api.h +++ b/chromium/chrome/browser/extensions/api/extension_action/extension_action_api.h @@ -27,8 +27,6 @@ class BrowserContext; class WebContents; } -class Browser; - namespace extensions { class ExtensionHost; class ExtensionPrefs; @@ -73,12 +71,6 @@ class ExtensionActionAPI : public BrowserContextKeyedAPI { void AddObserver(Observer* observer); void RemoveObserver(Observer* observer); - // Opens the popup for the given |extension| in the given |browser|'s window, - // invoking |callback| when complete. - bool ShowExtensionActionPopupForAPICall(const Extension* extension, - Browser* browser, - ShowPopupCallback callback); - // Notifies that there has been a change in the given |extension_action|. void NotifyChange(ExtensionAction* extension_action, content::WebContents* web_contents, diff --git a/chromium/chrome/browser/extensions/api/extension_action/page_action_interactive_test.cc b/chromium/chrome/browser/extensions/api/extension_action/page_action_interactive_test.cc index 7a70b718560..0ce7a7f7f75 100644 --- a/chromium/chrome/browser/extensions/api/extension_action/page_action_interactive_test.cc +++ b/chromium/chrome/browser/extensions/api/extension_action/page_action_interactive_test.cc @@ -6,6 +6,7 @@ #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/extensions/extension_action_test_helper.h" #include "chrome/test/base/interactive_test_utils.h" #include "content/public/test/browser_test.h" #include "extensions/test/result_catcher.h" @@ -27,9 +28,7 @@ IN_PROC_BROWSER_TEST_F(PageActionInteractiveTest, ShowPageActionPopup) { ASSERT_TRUE(browser()->window()->IsActive()); ResultCatcher catcher; - ASSERT_TRUE(ExtensionActionAPI::Get(browser()->profile()) - ->ShowExtensionActionPopupForAPICall(extension, browser(), - ShowPopupCallback())); + ExtensionActionTestHelper::Create(browser())->Press(extension->id()); ASSERT_TRUE(catcher.GetNextResult()); } |