summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/extensions/api/extension_action
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-05-17 17:24:03 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-06-22 07:51:41 +0000
commit774f54339e5db91f785733232d3950366db65d07 (patch)
tree068e1b47bd1af94d77094ed12b604a6b83d9c22a /chromium/chrome/browser/extensions/api/extension_action
parentf7eaed5286974984ba5f9e3189d8f49d03e99f81 (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')
-rw-r--r--chromium/chrome/browser/extensions/api/extension_action/browser_action_interactive_test.cc3
-rw-r--r--chromium/chrome/browser/extensions/api/extension_action/extension_action_api.cc52
-rw-r--r--chromium/chrome/browser/extensions/api/extension_action/extension_action_api.h8
-rw-r--r--chromium/chrome/browser/extensions/api/extension_action/page_action_interactive_test.cc5
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());
}