Chromium Code Reviews| Index: extensions/browser/api/guest_view/web_view/web_view_internal_api.cc |
| diff --git a/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc b/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc |
| index 12e9686c48bbe77cc5e40e9554b9588c5221545d..e76beb80d828a53bd0c2d031611598d35b6c0f45 100644 |
| --- a/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc |
| +++ b/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc |
| @@ -20,9 +20,6 @@ |
| #include "extensions/common/manifest_constants.h" |
| #include "extensions/common/permissions/permissions_data.h" |
| #include "extensions/common/user_script.h" |
| -#include "net/base/load_flags.h" |
| -#include "net/url_request/url_fetcher.h" |
| -#include "net/url_request/url_fetcher_delegate.h" |
| #include "third_party/WebKit/public/web/WebFindOptions.h" |
| using content::WebContents; |
| @@ -236,51 +233,6 @@ bool ParseContentScripts( |
| namespace extensions { |
| -// WebUIURLFetcher downloads the content of a file by giving its |url| on WebUI. |
| -// Each WebUIURLFetcher is associated with a given |render_process_id, |
| -// render_view_id| pair. |
| -class WebViewInternalExecuteCodeFunction::WebUIURLFetcher |
| - : public net::URLFetcherDelegate { |
| - public: |
| - WebUIURLFetcher( |
| - content::BrowserContext* context, |
| - const WebViewInternalExecuteCodeFunction::WebUILoadFileCallback& callback) |
| - : context_(context), callback_(callback) {} |
| - ~WebUIURLFetcher() override {} |
| - |
| - void Start(int render_process_id, int render_view_id, const GURL& url) { |
| - fetcher_.reset(net::URLFetcher::Create(url, net::URLFetcher::GET, this)); |
| - fetcher_->SetRequestContext(context_->GetRequestContext()); |
| - fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES); |
| - |
| - content::AssociateURLFetcherWithRenderFrame( |
| - fetcher_.get(), url, render_process_id, render_view_id); |
| - fetcher_->Start(); |
| - } |
| - |
| - private: |
| - // net::URLFetcherDelegate: |
| - void OnURLFetchComplete(const net::URLFetcher* source) override { |
| - CHECK_EQ(fetcher_.get(), source); |
| - |
| - std::string data; |
| - bool result = false; |
| - if (fetcher_->GetStatus().status() == net::URLRequestStatus::SUCCESS) { |
| - result = fetcher_->GetResponseAsString(&data); |
| - DCHECK(result); |
| - } |
| - fetcher_.reset(); |
| - callback_.Run(result, data); |
| - callback_.Reset(); |
| - } |
| - |
| - content::BrowserContext* context_; |
| - WebViewInternalExecuteCodeFunction::WebUILoadFileCallback callback_; |
| - scoped_ptr<net::URLFetcher> fetcher_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(WebUIURLFetcher); |
| -}; |
| - |
| bool WebViewInternalExtensionFunction::RunAsync() { |
| int instance_id = 0; |
| EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &instance_id)); |
| @@ -379,7 +331,7 @@ const GURL& WebViewInternalExecuteCodeFunction::GetWebViewSrc() const { |
| bool WebViewInternalExecuteCodeFunction::LoadFileForWebUI( |
| const std::string& file_src, |
| - const WebUILoadFileCallback& callback) { |
| + const WebUIURLFetcher::WebUILoadFileCallback& callback) { |
| if (!render_view_host() || !render_view_host()->GetProcess()) |
| return false; |
| WebViewGuest* guest = WebViewGuest::From( |
| @@ -390,9 +342,11 @@ bool WebViewInternalExecuteCodeFunction::LoadFileForWebUI( |
| GURL owner_base_url(guest->GetOwnerSiteURL().GetWithEmptyPath()); |
| GURL file_url(owner_base_url.Resolve(file_src)); |
| - url_fetcher_.reset(new WebUIURLFetcher(this->browser_context(), callback)); |
| - url_fetcher_->Start(render_view_host()->GetProcess()->GetID(), |
| - render_view_host()->GetRoutingID(), file_url); |
| + AddRef(); |
| + url_fetcher_.reset(new WebUIURLFetcher( |
| + this->browser_context(), render_view_host()->GetProcess()->GetID(), |
| + render_view_host()->GetRoutingID(), file_url, callback)); |
| + url_fetcher_->Start(); |
| return true; |
| } |
| @@ -402,16 +356,25 @@ bool WebViewInternalExecuteCodeFunction::LoadFile(const std::string& file) { |
| *details_->file, |
| base::Bind( |
| &WebViewInternalExecuteCodeFunction::DidLoadAndLocalizeFile, |
| - this, file))) |
| + base::Unretained(this), file))) |
|
Devlin
2015/04/21 22:32:20
I think I liked this better the other way. It's k
Xi Han
2015/04/22 15:32:10
Ok, revert these changes.
|
| return true; |
| SendResponse(false); |
| error_ = ErrorUtils::FormatErrorMessage(kLoadFileError, file); |
| + Release(); |
| return false; |
| } |
| return ExecuteCodeFunction::LoadFile(file); |
| } |
| +void WebViewInternalExecuteCodeFunction::DidLoadAndLocalizeFile( |
| + const std::string& file, |
| + bool success, |
| + const std::string& data) { |
| + ExecuteCodeFunction::DidLoadAndLocalizeFile(file, success, data); |
| + Release(); |
| +} |
| + |
| WebViewInternalExecuteScriptFunction::WebViewInternalExecuteScriptFunction() { |
| } |
| @@ -465,8 +428,9 @@ WebViewInternalAddContentScriptsFunction::Run() { |
| WebViewContentScriptManager::Get(browser_context()); |
| DCHECK(manager); |
| - manager->AddContentScripts(sender_web_contents, params->instance_id, host_id, |
| - result); |
| + manager->AddContentScripts(sender_web_contents, |
| + render_view_host()->GetRoutingID(), |
| + params->instance_id, host_id, result); |
| return RespondNow(NoArguments()); |
| } |