Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1332)

Unified Diff: chrome/browser/extensions/page_action_controller.cc

Issue 270153004: Introduce ActiveScriptController; track active extension scripts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: UMA Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/page_action_controller.cc
diff --git a/chrome/browser/extensions/page_action_controller.cc b/chrome/browser/extensions/page_action_controller.cc
index 6d9bfad11a903e1ce8c72e7a0fb8e4b015600cc8..dd96e48c96d99fe490410800d5ff24e1d414220e 100644
--- a/chrome/browser/extensions/page_action_controller.cc
+++ b/chrome/browser/extensions/page_action_controller.cc
@@ -9,14 +9,11 @@
#include "base/lazy_instance.h"
#include "base/metrics/histogram.h"
#include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
-#include "chrome/browser/extensions/component_loader.h"
#include "chrome/browser/extensions/extension_action.h"
#include "chrome/browser/extensions/extension_action_manager.h"
-#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/sessions/session_id.h"
-#include "content/public/browser/invalidate_type.h"
#include "content/public/browser/navigation_details.h"
#include "content/public/browser/web_contents.h"
#include "extensions/browser/extension_registry.h"
@@ -29,27 +26,26 @@ base::LazyInstance<std::set<Profile*> > g_reported_for_profiles =
LAZY_INSTANCE_INITIALIZER;
PageActionController::PageActionController(content::WebContents* web_contents)
- : content::WebContentsObserver(web_contents) {}
-
-PageActionController::~PageActionController() {}
+ : LocationBarControllerProvider(web_contents) {
+}
-std::vector<ExtensionAction*> PageActionController::GetCurrentActions() const {
- ExtensionRegistry* registry = GetExtensionRegistry();
- if (!registry)
- return std::vector<ExtensionAction*>();
+PageActionController::~PageActionController() {
+}
+std::vector<ExtensionAction*> PageActionController::GetCurrentActions() {
// Accumulate the list of all page actions to display.
std::vector<ExtensionAction*> current_actions;
ExtensionActionManager* extension_action_manager =
ExtensionActionManager::Get(GetProfile());
- const ExtensionSet& enabled_set = registry->enabled_extensions();
- for (ExtensionSet::const_iterator i = enabled_set.begin();
- i != enabled_set.end();
- ++i) {
+ const ExtensionSet& enabled_set =
+ GetExtensionRegistry()->enabled_extensions();
+ for (ExtensionSet::const_iterator iter = enabled_set.begin();
+ iter != enabled_set.end();
+ ++iter) {
ExtensionAction* action =
- extension_action_manager->GetPageAction(*i->get());
+ extension_action_manager->GetPageAction(*iter->get());
if (action)
current_actions.push_back(action);
}
@@ -64,47 +60,40 @@ std::vector<ExtensionAction*> PageActionController::GetCurrentActions() const {
}
LocationBarController::Action PageActionController::OnClicked(
- const std::string& extension_id, int mouse_button) {
- ExtensionRegistry* registry = GetExtensionRegistry();
- if (!registry)
- return ACTION_NONE;
-
- const Extension* extension =
- registry->enabled_extensions().GetByID(extension_id);
- CHECK(extension);
+ const Extension* extension,
+ LocationBarController::MouseButton button) {
ExtensionAction* page_action =
ExtensionActionManager::Get(GetProfile())->GetPageAction(*extension);
CHECK(page_action);
- int tab_id = ExtensionTabUtil::GetTabId(web_contents());
+ int tab_id = SessionID::IdForTab(web_contents());
extensions::TabHelper::FromWebContents(web_contents())->
active_tab_permission_granter()->GrantIfRequested(extension);
- switch (mouse_button) {
- case 1: // left
- case 2: // middle
+ switch (button) {
+ case LocationBarController::MOUSE_BUTTON_LEFT:
+ case LocationBarController::MOUSE_BUTTON_MIDDLE:
if (page_action->HasPopup(tab_id))
- return ACTION_SHOW_POPUP;
+ return LocationBarController::ACTION_SHOW_POPUP;
ExtensionActionAPI::PageActionExecuted(
- GetProfile(), *page_action, tab_id,
- web_contents()->GetURL().spec(), mouse_button);
- return ACTION_NONE;
-
- case 3: // right
+ web_contents()->GetBrowserContext(),
+ *page_action,
+ tab_id,
+ web_contents()->GetLastCommittedURL().spec(),
+ button);
+ return LocationBarController::ACTION_NONE;
+
+ case LocationBarController::MOUSE_BUTTON_RIGHT:
return extension->ShowConfigureContextMenus() ?
- ACTION_SHOW_CONTEXT_MENU : ACTION_NONE;
+ LocationBarController::ACTION_SHOW_CONTEXT_MENU :
+ LocationBarController::ACTION_NONE;
}
- return ACTION_NONE;
-}
-
-void PageActionController::NotifyChange() {
- web_contents()->NotifyNavigationStateChanged(
- content::INVALIDATE_TYPE_PAGE_ACTIONS);
+ return LocationBarController::ACTION_NONE;
}
-void PageActionController::DidNavigateMainFrame(
+void PageActionController::NavigatedMainFrame(
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) {
if (details.is_in_page)
@@ -115,25 +104,15 @@ void PageActionController::DidNavigateMainFrame(
if (current_actions.empty())
return;
- for (size_t i = 0; i < current_actions.size(); ++i) {
- current_actions[i]->ClearAllValuesForTab(
- SessionID::IdForTab(web_contents()));
- }
+ int tab_id = SessionID::IdForTab(web_contents());
+ for (size_t i = 0; i < current_actions.size(); ++i)
+ current_actions[i]->ClearAllValuesForTab(tab_id);
NotifyChange();
}
-Profile* PageActionController::GetProfile() const {
- content::WebContents* web_contents = this->web_contents();
- if (web_contents)
- return Profile::FromBrowserContext(web_contents->GetBrowserContext());
-
- return NULL;
-}
-
-ExtensionRegistry* PageActionController::GetExtensionRegistry() const {
- Profile* profile = this->GetProfile();
- return profile ? ExtensionRegistry::Get(profile) : NULL;
+Profile* PageActionController::GetProfile() {
+ return Profile::FromBrowserContext(web_contents()->GetBrowserContext());
}
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698