Index: chrome/browser/extensions/execute_code_in_tab_function.cc |
diff --git a/chrome/browser/extensions/execute_code_in_tab_function.cc b/chrome/browser/extensions/execute_code_in_tab_function.cc |
index d17de243da87b5ef0c556ab6cc2e0f899bf3e07f..ee3f5be7f08559010e2745c2ef5c4613c99db5af 100644 |
--- a/chrome/browser/extensions/execute_code_in_tab_function.cc |
+++ b/chrome/browser/extensions/execute_code_in_tab_function.cc |
@@ -20,6 +20,7 @@ |
#include "chrome/common/extensions/extension_error_utils.h" |
#include "chrome/common/extensions/extension_file_util.h" |
#include "chrome/common/extensions/extension_l10n_util.h" |
+#include "chrome/common/extensions/extension_manifest_constants.h" |
#include "chrome/common/extensions/extension_message_bundle.h" |
#include "chrome/common/extensions/extension_messages.h" |
#include "content/public/browser/render_view_host.h" |
@@ -31,7 +32,8 @@ namespace keys = extension_tabs_module_constants; |
ExecuteCodeInTabFunction::ExecuteCodeInTabFunction() |
: execute_tab_id_(-1), |
- all_frames_(false) { |
+ all_frames_(false), |
+ run_at_(UserScript::DOCUMENT_IDLE) { |
} |
ExecuteCodeInTabFunction::~ExecuteCodeInTabFunction() { |
@@ -95,6 +97,21 @@ bool ExecuteCodeInTabFunction::RunImpl() { |
return false; |
} |
+ if (script_info->HasKey(keys::kRunAtKey)) { |
+ std::string run_string; |
+ EXTENSION_FUNCTION_VALIDATE(script_info->GetString( |
+ keys::kRunAtKey, &run_string)); |
+ |
+ if (run_string == extension_manifest_values::kRunAtDocumentStart) |
+ run_at_ = UserScript::DOCUMENT_START; |
+ else if (run_string == extension_manifest_values::kRunAtDocumentEnd) |
+ run_at_ = UserScript::DOCUMENT_END; |
+ else if (run_string == extension_manifest_values::kRunAtDocumentIdle) |
+ run_at_ = UserScript::DOCUMENT_IDLE; |
+ else |
+ EXTENSION_FUNCTION_VALIDATE(false); |
+ } |
+ |
std::string code_string; |
if (script_info->HasKey(keys::kCodeKey)) { |
if (!script_info->GetString(keys::kCodeKey, &code_string)) |
@@ -222,6 +239,7 @@ bool ExecuteCodeInTabFunction::Execute(const std::string& code_string) { |
params.is_javascript = is_js_code; |
params.code = code_string; |
params.all_frames = all_frames_; |
+ params.run_at = run_at_; |
params.in_main_world = false; |
contents->web_contents()->GetRenderViewHost()->Send( |
new ExtensionMsg_ExecuteCode( |