| 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 "extensions/browser/script_executor.h" | 5 #include "extensions/browser/script_executor.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/pickle.h" | 10 #include "base/pickle.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 | 26 |
| 27 namespace { | 27 namespace { |
| 28 | 28 |
| 29 const char* kRendererDestroyed = "The tab was closed."; | 29 const char* kRendererDestroyed = "The tab was closed."; |
| 30 | 30 |
| 31 // A handler for a single injection request. On creation this will send the | 31 // A handler for a single injection request. On creation this will send the |
| 32 // injection request to the renderer, and it will be destroyed after either the | 32 // injection request to the renderer, and it will be destroyed after either the |
| 33 // corresponding response comes from the renderer, or the renderer is destroyed. | 33 // corresponding response comes from the renderer, or the renderer is destroyed. |
| 34 class Handler : public content::WebContentsObserver { | 34 class Handler : public content::WebContentsObserver { |
| 35 public: | 35 public: |
| 36 Handler(ObserverList<ScriptExecutionObserver>* script_observers, | 36 Handler(base::ObserverList<ScriptExecutionObserver>* script_observers, |
| 37 content::WebContents* web_contents, | 37 content::WebContents* web_contents, |
| 38 ExtensionMsg_ExecuteCode_Params* params, | 38 ExtensionMsg_ExecuteCode_Params* params, |
| 39 ScriptExecutor::FrameScope scope, | 39 ScriptExecutor::FrameScope scope, |
| 40 int* request_id_counter, | 40 int* request_id_counter, |
| 41 const ScriptExecutor::ExecuteScriptCallback& callback) | 41 const ScriptExecutor::ExecuteScriptCallback& callback) |
| 42 : content::WebContentsObserver(web_contents), | 42 : content::WebContentsObserver(web_contents), |
| 43 script_observers_(AsWeakPtr(script_observers)), | 43 script_observers_(AsWeakPtr(script_observers)), |
| 44 host_id_(params->host_id), | 44 host_id_(params->host_id), |
| 45 main_request_id_((*request_id_counter)++), | 45 main_request_id_((*request_id_counter)++), |
| 46 sub_request_id_(scope == ScriptExecutor::ALL_FRAMES ? | 46 sub_request_id_(scope == ScriptExecutor::ALL_FRAMES ? |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 } | 140 } |
| 141 | 141 |
| 142 void Finish(const std::string& error, | 142 void Finish(const std::string& error, |
| 143 const GURL& url, | 143 const GURL& url, |
| 144 const base::ListValue& result) { | 144 const base::ListValue& result) { |
| 145 if (!callback_.is_null()) | 145 if (!callback_.is_null()) |
| 146 callback_.Run(error, url, result); | 146 callback_.Run(error, url, result); |
| 147 delete this; | 147 delete this; |
| 148 } | 148 } |
| 149 | 149 |
| 150 base::WeakPtr<ObserverList<ScriptExecutionObserver>> script_observers_; | 150 base::WeakPtr<base::ObserverList<ScriptExecutionObserver>> script_observers_; |
| 151 | 151 |
| 152 // The id of the host (the extension or the webui) doing the injection. | 152 // The id of the host (the extension or the webui) doing the injection. |
| 153 HostID host_id_; | 153 HostID host_id_; |
| 154 | 154 |
| 155 // The request id of the injection into the main frame. | 155 // The request id of the injection into the main frame. |
| 156 int main_request_id_; | 156 int main_request_id_; |
| 157 | 157 |
| 158 // The request id of the injection into any sub frames. We need a separate id | 158 // The request id of the injection into any sub frames. We need a separate id |
| 159 // for these so that we know which frame to use as the first result, and which | 159 // for these so that we know which frame to use as the first result, and which |
| 160 // error (if any) to use. | 160 // error (if any) to use. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 178 DISALLOW_COPY_AND_ASSIGN(Handler); | 178 DISALLOW_COPY_AND_ASSIGN(Handler); |
| 179 }; | 179 }; |
| 180 | 180 |
| 181 } // namespace | 181 } // namespace |
| 182 | 182 |
| 183 ScriptExecutionObserver::~ScriptExecutionObserver() { | 183 ScriptExecutionObserver::~ScriptExecutionObserver() { |
| 184 } | 184 } |
| 185 | 185 |
| 186 ScriptExecutor::ScriptExecutor( | 186 ScriptExecutor::ScriptExecutor( |
| 187 content::WebContents* web_contents, | 187 content::WebContents* web_contents, |
| 188 ObserverList<ScriptExecutionObserver>* script_observers) | 188 base::ObserverList<ScriptExecutionObserver>* script_observers) |
| 189 : next_request_id_(0), | 189 : next_request_id_(0), |
| 190 web_contents_(web_contents), | 190 web_contents_(web_contents), |
| 191 script_observers_(script_observers) { | 191 script_observers_(script_observers) { |
| 192 CHECK(web_contents_); | 192 CHECK(web_contents_); |
| 193 } | 193 } |
| 194 | 194 |
| 195 ScriptExecutor::~ScriptExecutor() { | 195 ScriptExecutor::~ScriptExecutor() { |
| 196 } | 196 } |
| 197 | 197 |
| 198 void ScriptExecutor::ExecuteScript(const HostID& host_id, | 198 void ScriptExecutor::ExecuteScript(const HostID& host_id, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 params.file_url = file_url; | 231 params.file_url = file_url; |
| 232 params.wants_result = (result_type == JSON_SERIALIZED_RESULT); | 232 params.wants_result = (result_type == JSON_SERIALIZED_RESULT); |
| 233 params.user_gesture = user_gesture; | 233 params.user_gesture = user_gesture; |
| 234 | 234 |
| 235 // Handler handles IPCs and deletes itself on completion. | 235 // Handler handles IPCs and deletes itself on completion. |
| 236 new Handler(script_observers_, web_contents_, ¶ms, frame_scope, | 236 new Handler(script_observers_, web_contents_, ¶ms, frame_scope, |
| 237 &next_request_id_, callback); | 237 &next_request_id_, callback); |
| 238 } | 238 } |
| 239 | 239 |
| 240 } // namespace extensions | 240 } // namespace extensions |
| OLD | NEW |