OLD | NEW |
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" |
11 #include "base/stl_util.h" | 11 #include "base/stl_util.h" |
12 #include "chrome/browser/extensions/active_tab_permission_granter.h" | 12 #include "chrome/browser/extensions/active_tab_permission_granter.h" |
| 13 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
13 #include "chrome/browser/extensions/extension_action.h" | 14 #include "chrome/browser/extensions/extension_action.h" |
14 #include "chrome/browser/extensions/extension_action_manager.h" | 15 #include "chrome/browser/extensions/extension_action_manager.h" |
15 #include "chrome/browser/extensions/extension_util.h" | 16 #include "chrome/browser/extensions/extension_util.h" |
16 #include "chrome/browser/extensions/location_bar_controller.h" | 17 #include "chrome/browser/extensions/location_bar_controller.h" |
17 #include "chrome/browser/extensions/permissions_updater.h" | 18 #include "chrome/browser/extensions/permissions_updater.h" |
18 #include "chrome/browser/extensions/tab_helper.h" | 19 #include "chrome/browser/extensions/tab_helper.h" |
19 #include "chrome/browser/profiles/profile.h" | 20 #include "chrome/browser/profiles/profile.h" |
20 #include "chrome/browser/sessions/session_tab_helper.h" | 21 #include "chrome/browser/sessions/session_tab_helper.h" |
21 #include "chrome/common/extensions/api/extension_action/action_info.h" | 22 #include "chrome/common/extensions/api/extension_action/action_info.h" |
22 #include "components/crx_file/id_util.h" | 23 #include "components/crx_file/id_util.h" |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 | 212 |
212 void ActiveScriptController::RequestScriptInjection( | 213 void ActiveScriptController::RequestScriptInjection( |
213 const Extension* extension, | 214 const Extension* extension, |
214 const base::Closure& callback) { | 215 const base::Closure& callback) { |
215 CHECK(extension); | 216 CHECK(extension); |
216 PendingRequestList& list = pending_requests_[extension->id()]; | 217 PendingRequestList& list = pending_requests_[extension->id()]; |
217 list.push_back(callback); | 218 list.push_back(callback); |
218 | 219 |
219 // If this was the first entry, notify the location bar that there's a new | 220 // If this was the first entry, notify the location bar that there's a new |
220 // icon. | 221 // icon. |
221 if (list.size() == 1u) | 222 if (list.size() == 1u) { |
222 LocationBarController::NotifyChange(web_contents()); | 223 ExtensionActionAPI::Get(web_contents()->GetBrowserContext())-> |
| 224 NotifyPageActionsChanged(web_contents()); |
| 225 } |
223 } | 226 } |
224 | 227 |
225 void ActiveScriptController::RunPendingForExtension( | 228 void ActiveScriptController::RunPendingForExtension( |
226 const Extension* extension) { | 229 const Extension* extension) { |
227 DCHECK(extension); | 230 DCHECK(extension); |
228 | 231 |
229 content::NavigationEntry* visible_entry = | 232 content::NavigationEntry* visible_entry = |
230 web_contents()->GetController().GetVisibleEntry(); | 233 web_contents()->GetController().GetVisibleEntry(); |
231 // Refuse to run if there's no visible entry, because we have no idea of | 234 // Refuse to run if there's no visible entry, because we have no idea of |
232 // determining if it's the proper page. This should rarely, if ever, happen. | 235 // determining if it's the proper page. This should rarely, if ever, happen. |
(...skipping 21 matching lines...) Expand all Loading... |
254 active_tab_permission_granter()->GrantIfRequested(extension); | 257 active_tab_permission_granter()->GrantIfRequested(extension); |
255 | 258 |
256 // Run all pending injections for the given extension. | 259 // Run all pending injections for the given extension. |
257 for (PendingRequestList::iterator request = requests.begin(); | 260 for (PendingRequestList::iterator request = requests.begin(); |
258 request != requests.end(); | 261 request != requests.end(); |
259 ++request) { | 262 ++request) { |
260 request->Run(); | 263 request->Run(); |
261 } | 264 } |
262 | 265 |
263 // Inform the location bar that the action is now gone. | 266 // Inform the location bar that the action is now gone. |
264 LocationBarController::NotifyChange(web_contents()); | 267 ExtensionActionAPI::Get(web_contents()->GetBrowserContext())-> |
| 268 NotifyPageActionsChanged(web_contents()); |
265 } | 269 } |
266 | 270 |
267 void ActiveScriptController::OnRequestScriptInjectionPermission( | 271 void ActiveScriptController::OnRequestScriptInjectionPermission( |
268 const std::string& extension_id, | 272 const std::string& extension_id, |
269 UserScript::InjectionType script_type, | 273 UserScript::InjectionType script_type, |
270 int64 request_id) { | 274 int64 request_id) { |
271 if (!crx_file::id_util::IdIsValid(extension_id)) { | 275 if (!crx_file::id_util::IdIsValid(extension_id)) { |
272 NOTREACHED() << "'" << extension_id << "' is not a valid id."; | 276 NOTREACHED() << "'" << extension_id << "' is not a valid id."; |
273 return; | 277 return; |
274 } | 278 } |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 UMA_HISTOGRAM_COUNTS_100( | 349 UMA_HISTOGRAM_COUNTS_100( |
346 "Extensions.ActiveScriptController.PermittedExtensions", | 350 "Extensions.ActiveScriptController.PermittedExtensions", |
347 permitted_extensions_.size()); | 351 permitted_extensions_.size()); |
348 UMA_HISTOGRAM_COUNTS_100( | 352 UMA_HISTOGRAM_COUNTS_100( |
349 "Extensions.ActiveScriptController.DeniedExtensions", | 353 "Extensions.ActiveScriptController.DeniedExtensions", |
350 pending_requests_.size()); | 354 pending_requests_.size()); |
351 } | 355 } |
352 } | 356 } |
353 | 357 |
354 } // namespace extensions | 358 } // namespace extensions |
OLD | NEW |