Index: extensions/browser/guest_view/web_view/web_ui/web_ui_url_fetcher.cc |
diff --git a/extensions/browser/guest_view/web_view/web_ui/web_ui_url_fetcher.cc b/extensions/browser/guest_view/web_view/web_ui/web_ui_url_fetcher.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f79fe449db29af1f790e547aee3f614d554c1ea6 |
--- /dev/null |
+++ b/extensions/browser/guest_view/web_view/web_ui/web_ui_url_fetcher.cc |
@@ -0,0 +1,43 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "extensions/browser/guest_view/web_view/web_ui/web_ui_url_fetcher.h" |
+ |
+#include "content/public/browser/browser_context.h" |
+#include "content/public/common/url_fetcher.h" |
+#include "net/base/load_flags.h" |
+ |
+WebUIURLFetcher::WebUIURLFetcher(content::BrowserContext* context, |
+ const WebUILoadFileCallback& callback) |
+ : context_(context), callback_(callback) { |
+} |
+ |
+WebUIURLFetcher::~WebUIURLFetcher() { |
+} |
+ |
+void WebUIURLFetcher::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(); |
+} |
+ |
+void WebUIURLFetcher::OnURLFetchComplete(const net::URLFetcher* source) { |
+ 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(); |
+} |