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

Side by Side Diff: chrome/browser/extensions/active_script_controller.cc

Issue 496863003: Consolidate ExtensionAction execution code (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/active_script_controller.h" 5 #include "chrome/browser/extensions/active_script_controller.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 // permissions and granted permissions. 132 // permissions and granted permissions.
133 // TODO(devlin): Make sure that the permission is removed from 133 // TODO(devlin): Make sure that the permission is removed from
134 // withheld_permissions if appropriate. 134 // withheld_permissions if appropriate.
135 PermissionsUpdater(web_contents()->GetBrowserContext()) 135 PermissionsUpdater(web_contents()->GetBrowserContext())
136 .AddPermissions(extension, new_permissions.get()); 136 .AddPermissions(extension, new_permissions.get());
137 137
138 // Allow current tab to run injection. 138 // Allow current tab to run injection.
139 OnClicked(extension); 139 OnClicked(extension);
140 } 140 }
141 141
142 void ActiveScriptController::OnClicked(const Extension* extension) {
143 DCHECK(ContainsKey(pending_requests_, extension->id()));
144 RunPendingForExtension(extension);
145 }
146
142 bool ActiveScriptController::HasActiveScriptAction(const Extension* extension) { 147 bool ActiveScriptController::HasActiveScriptAction(const Extension* extension) {
143 return enabled_ && pending_requests_.count(extension->id()) > 0; 148 return enabled_ && pending_requests_.count(extension->id()) > 0;
144 } 149 }
145 150
146 ExtensionAction* ActiveScriptController::GetActionForExtension( 151 ExtensionAction* ActiveScriptController::GetActionForExtension(
147 const Extension* extension) { 152 const Extension* extension) {
148 if (!enabled_ || pending_requests_.count(extension->id()) == 0) 153 if (!enabled_ || pending_requests_.count(extension->id()) == 0)
149 return NULL; // No action for this extension. 154 return NULL; // No action for this extension.
150 155
151 ActiveScriptMap::iterator existing = 156 ActiveScriptMap::iterator existing =
152 active_script_actions_.find(extension->id()); 157 active_script_actions_.find(extension->id());
153 if (existing != active_script_actions_.end()) 158 if (existing != active_script_actions_.end())
154 return existing->second.get(); 159 return existing->second.get();
155 160
156 linked_ptr<ExtensionAction> action(ExtensionActionManager::Get( 161 linked_ptr<ExtensionAction> action(ExtensionActionManager::Get(
157 Profile::FromBrowserContext(web_contents()->GetBrowserContext())) 162 Profile::FromBrowserContext(web_contents()->GetBrowserContext()))
158 ->GetBestFitAction(*extension, ActionInfo::TYPE_PAGE).release()); 163 ->GetBestFitAction(*extension, ActionInfo::TYPE_PAGE).release());
159 action->SetIsVisible(ExtensionAction::kDefaultTabId, true); 164 action->SetIsVisible(ExtensionAction::kDefaultTabId, true);
160 165
161 active_script_actions_[extension->id()] = action; 166 active_script_actions_[extension->id()] = action;
162 return action.get(); 167 return action.get();
163 } 168 }
164 169
165 ExtensionAction::ShowAction ActiveScriptController::OnClicked(
166 const Extension* extension) {
167 DCHECK(ContainsKey(pending_requests_, extension->id()));
168 RunPendingForExtension(extension);
169 return ExtensionAction::ACTION_NONE;
170 }
171
172 void ActiveScriptController::OnNavigated() { 170 void ActiveScriptController::OnNavigated() {
173 LogUMA(); 171 LogUMA();
174 permitted_extensions_.clear(); 172 permitted_extensions_.clear();
175 pending_requests_.clear(); 173 pending_requests_.clear();
176 } 174 }
177 175
178 void ActiveScriptController::OnExtensionUnloaded(const Extension* extension) { 176 void ActiveScriptController::OnExtensionUnloaded(const Extension* extension) {
179 PendingRequestMap::iterator iter = pending_requests_.find(extension->id()); 177 PendingRequestMap::iterator iter = pending_requests_.find(extension->id());
180 if (iter != pending_requests_.end()) 178 if (iter != pending_requests_.end())
181 pending_requests_.erase(iter); 179 pending_requests_.erase(iter);
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 UMA_HISTOGRAM_COUNTS_100( 345 UMA_HISTOGRAM_COUNTS_100(
348 "Extensions.ActiveScriptController.PermittedExtensions", 346 "Extensions.ActiveScriptController.PermittedExtensions",
349 permitted_extensions_.size()); 347 permitted_extensions_.size());
350 UMA_HISTOGRAM_COUNTS_100( 348 UMA_HISTOGRAM_COUNTS_100(
351 "Extensions.ActiveScriptController.DeniedExtensions", 349 "Extensions.ActiveScriptController.DeniedExtensions",
352 pending_requests_.size()); 350 pending_requests_.size());
353 } 351 }
354 } 352 }
355 353
356 } // namespace extensions 354 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698