OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/api/declarative_content/content_action.h" | 5 #include "chrome/browser/extensions/api/declarative_content/content_action.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
11 #include "base/values.h" | 11 #include "base/values.h" |
12 #include "chrome/browser/extensions/api/declarative_content/content_constants.h" | 12 #include "chrome/browser/extensions/api/declarative_content/content_constants.h" |
13 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" | 13 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
| 14 #include "chrome/browser/extensions/consumer_id_factory.h" |
14 #include "chrome/browser/extensions/declarative_user_script_manager.h" | 15 #include "chrome/browser/extensions/declarative_user_script_manager.h" |
15 #include "chrome/browser/extensions/extension_action.h" | 16 #include "chrome/browser/extensions/extension_action.h" |
16 #include "chrome/browser/extensions/extension_action_manager.h" | 17 #include "chrome/browser/extensions/extension_action_manager.h" |
17 #include "chrome/browser/extensions/extension_tab_util.h" | 18 #include "chrome/browser/extensions/extension_tab_util.h" |
18 #include "chrome/browser/profiles/profile.h" | 19 #include "chrome/browser/profiles/profile.h" |
19 #include "chrome/browser/sessions/session_tab_helper.h" | 20 #include "chrome/browser/sessions/session_tab_helper.h" |
20 #include "content/public/browser/invalidate_type.h" | 21 #include "content/public/browser/invalidate_type.h" |
21 #include "content/public/browser/render_view_host.h" | 22 #include "content/public/browser/render_view_host.h" |
22 #include "content/public/browser/web_contents.h" | 23 #include "content/public/browser/web_contents.h" |
23 #include "extensions/browser/extension_registry.h" | 24 #include "extensions/browser/extension_registry.h" |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 &script_data->match_about_blank)); | 344 &script_data->match_about_blank)); |
344 } | 345 } |
345 | 346 |
346 return true; | 347 return true; |
347 } | 348 } |
348 | 349 |
349 RequestContentScript::RequestContentScript( | 350 RequestContentScript::RequestContentScript( |
350 content::BrowserContext* browser_context, | 351 content::BrowserContext* browser_context, |
351 const Extension* extension, | 352 const Extension* extension, |
352 const ScriptData& script_data) { | 353 const ScriptData& script_data) { |
353 InitScript(extension, script_data); | 354 const RequestKey key(extension->id()); |
354 | 355 const ConsumerID& consumer_id = ConsumerIDFactory::Create( |
| 356 key, ConsumerID::EXTENSIONS, ConsumerID::TAB); |
355 master_ = ExtensionSystem::Get(browser_context) | 357 master_ = ExtensionSystem::Get(browser_context) |
356 ->declarative_user_script_manager() | 358 ->declarative_user_script_manager() |
357 ->GetDeclarativeUserScriptMasterByID(extension->id()); | 359 ->GetDeclarativeUserScriptMasterByID(consumer_id); |
| 360 InitScript(extension, script_data); |
358 AddScript(); | 361 AddScript(); |
359 } | 362 } |
360 | 363 |
361 RequestContentScript::RequestContentScript( | 364 RequestContentScript::RequestContentScript( |
362 DeclarativeUserScriptMaster* master, | 365 DeclarativeUserScriptMaster* master, |
363 const Extension* extension, | 366 const Extension* extension, |
364 const ScriptData& script_data) { | 367 const ScriptData& script_data) { |
| 368 master_.reset(master); |
365 InitScript(extension, script_data); | 369 InitScript(extension, script_data); |
366 | |
367 master_ = master; | |
368 AddScript(); | 370 AddScript(); |
369 } | 371 } |
370 | 372 |
371 RequestContentScript::~RequestContentScript() { | 373 RequestContentScript::~RequestContentScript() { |
372 DCHECK(master_); | 374 DCHECK(master_.get()); |
373 master_->RemoveScript(script_); | 375 master_->RemoveScript(script_); |
374 } | 376 } |
375 | 377 |
376 void RequestContentScript::InitScript(const Extension* extension, | 378 void RequestContentScript::InitScript(const Extension* extension, |
377 const ScriptData& script_data) { | 379 const ScriptData& script_data) { |
378 script_.set_id(UserScript::GenerateUserScriptID()); | 380 script_.set_id(UserScript::GenerateUserScriptID()); |
379 script_.set_extension_id(extension->id()); | 381 script_.set_consumer_id(master_->consumer_id()); |
380 script_.set_run_location(UserScript::BROWSER_DRIVEN); | 382 script_.set_run_location(UserScript::BROWSER_DRIVEN); |
381 script_.set_match_all_frames(script_data.all_frames); | 383 script_.set_match_all_frames(script_data.all_frames); |
382 script_.set_match_about_blank(script_data.match_about_blank); | 384 script_.set_match_about_blank(script_data.match_about_blank); |
383 for (std::vector<std::string>::const_iterator it = | 385 for (std::vector<std::string>::const_iterator it = |
384 script_data.css_file_names.begin(); | 386 script_data.css_file_names.begin(); |
385 it != script_data.css_file_names.end(); ++it) { | 387 it != script_data.css_file_names.end(); ++it) { |
386 GURL url = extension->GetResourceURL(*it); | 388 GURL url = extension->GetResourceURL(*it); |
387 ExtensionResource resource = extension->GetResource(*it); | 389 ExtensionResource resource = extension->GetResource(*it); |
388 script_.css_scripts().push_back(UserScript::File( | 390 script_.css_scripts().push_back(UserScript::File( |
389 resource.extension_root(), resource.relative_path(), url)); | 391 resource.extension_root(), resource.relative_path(), url)); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 bool* bad_message, | 498 bool* bad_message, |
497 const base::DictionaryValue** action_dict, | 499 const base::DictionaryValue** action_dict, |
498 std::string* instance_type) { | 500 std::string* instance_type) { |
499 INPUT_FORMAT_VALIDATE(json_action.GetAsDictionary(action_dict)); | 501 INPUT_FORMAT_VALIDATE(json_action.GetAsDictionary(action_dict)); |
500 INPUT_FORMAT_VALIDATE( | 502 INPUT_FORMAT_VALIDATE( |
501 (*action_dict)->GetString(keys::kInstanceType, instance_type)); | 503 (*action_dict)->GetString(keys::kInstanceType, instance_type)); |
502 return true; | 504 return true; |
503 } | 505 } |
504 | 506 |
505 } // namespace extensions | 507 } // namespace extensions |
OLD | NEW |