summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/extensions/api/extension_action/extension_action_api.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/extensions/api/extension_action/extension_action_api.cc')
-rw-r--r--chromium/chrome/browser/extensions/api/extension_action/extension_action_api.cc29
1 files changed, 11 insertions, 18 deletions
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 3d48f3a8e6d..0b69a15ff2a 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
@@ -543,13 +543,11 @@ ExtensionActionGetBadgeBackgroundColorFunction::RunExtensionAction() {
return RespondNow(OneArgument(std::move(list)));
}
-BrowserActionOpenPopupFunction::BrowserActionOpenPopupFunction()
- : response_sent_(false) {
-}
+BrowserActionOpenPopupFunction::BrowserActionOpenPopupFunction() = default;
-bool BrowserActionOpenPopupFunction::RunAsync() {
+ExtensionFunction::ResponseAction BrowserActionOpenPopupFunction::Run() {
// We only allow the popup in the active window.
- Profile* profile = GetProfile();
+ Profile* profile = Profile::FromBrowserContext(browser_context());
Browser* browser = chrome::FindLastActiveWithProfile(profile);
// It's possible that the last active browser actually corresponds to the
// associated incognito profile, and this won't be returned by
@@ -566,13 +564,11 @@ bool BrowserActionOpenPopupFunction::RunAsync() {
// Otherwise, try to open a popup in the active browser.
// TODO(justinlin): Remove toolbar check when http://crbug.com/308645 is
// fixed.
- if (!browser ||
- !browser->window()->IsActive() ||
+ if (!browser || !browser->window()->IsActive() ||
!browser->window()->IsToolbarVisible() ||
- !ExtensionActionAPI::Get(GetProfile())->ShowExtensionActionPopup(
+ !ExtensionActionAPI::Get(profile)->ShowExtensionActionPopup(
extension_.get(), browser, false)) {
- error_ = kOpenPopupError;
- return false;
+ return RespondNow(Error(kOpenPopupError));
}
// Even if this is for an incognito window, we want to use the normal profile.
@@ -590,17 +586,15 @@ bool BrowserActionOpenPopupFunction::RunAsync() {
FROM_HERE,
base::BindOnce(&BrowserActionOpenPopupFunction::OpenPopupTimedOut, this),
base::TimeDelta::FromSeconds(10));
- return true;
+ return RespondLater();
}
void BrowserActionOpenPopupFunction::OpenPopupTimedOut() {
- if (response_sent_)
+ if (did_respond())
return;
DVLOG(1) << "chrome.browserAction.openPopup did not show a popup.";
- error_ = kOpenPopupError;
- SendResponse(false);
- response_sent_ = true;
+ Respond(Error(kOpenPopupError));
}
void BrowserActionOpenPopupFunction::Observe(
@@ -608,7 +602,7 @@ void BrowserActionOpenPopupFunction::Observe(
const content::NotificationSource& source,
const content::NotificationDetails& details) {
DCHECK_EQ(NOTIFICATION_EXTENSION_HOST_DID_STOP_FIRST_LOAD, type);
- if (response_sent_)
+ if (did_respond())
return;
ExtensionHost* host = content::Details<ExtensionHost>(details).ptr();
@@ -616,8 +610,7 @@ void BrowserActionOpenPopupFunction::Observe(
host->extension()->id() != extension_->id())
return;
- SendResponse(true);
- response_sent_ = true;
+ Respond(NoArguments());
registrar_.RemoveAll();
}