Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1784)

Unified Diff: android_webview/lib/aw_browser_dependency_factory_impl.cc

Issue 10913074: Add WebView implementation for CookieManager. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebased Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/lib/aw_browser_dependency_factory_impl.cc
diff --git a/android_webview/lib/aw_browser_dependency_factory_impl.cc b/android_webview/lib/aw_browser_dependency_factory_impl.cc
index f940b104abb1d740273cc733568b72d9c04cb577..f31bb64e7971921c0621145bfd3b64042f4b2cb7 100644
--- a/android_webview/lib/aw_browser_dependency_factory_impl.cc
+++ b/android_webview/lib/aw_browser_dependency_factory_impl.cc
@@ -5,8 +5,12 @@
#include "android_webview/lib/aw_browser_dependency_factory_impl.h"
// TODO(joth): Componentize or remove chrome/... dependencies.
+#include "android_webview/browser/net/aw_network_delegate.h"
#include "android_webview/native/aw_contents_container.h"
+#include "base/bind.h"
+#include "base/bind_helpers.h"
#include "base/lazy_instance.h"
+#include "base/memory/ref_counted.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
@@ -14,6 +18,11 @@
#include "chrome/browser/ui/tab_contents/tab_contents.h"
#include "content/public/browser/web_contents.h"
#include "ipc/ipc_message.h"
+#include "net/url_request/url_request_context.h"
+#include "net/url_request/url_request_context_getter.h"
+
+using content::BrowserContext;
+using content::WebContents;
namespace android_webview {
@@ -49,13 +58,44 @@ void AwBrowserDependencyFactoryImpl::InstallInstance() {
SetInstance(g_lazy_instance.Pointer());
}
-content::WebContents*
-AwBrowserDependencyFactoryImpl::CreateWebContents(bool incognito) {
+// Initializing the Network Delegate here is only a temporary solution until we
+// build an Android WebView specific BrowserContext that can handle building
+// this internally.
+void AwBrowserDependencyFactoryImpl::InitializeNetworkDelegateOnIOThread(
+ net::URLRequestContextGetter* normal_context,
+ net::URLRequestContextGetter* incognito_context) {
+ network_delegate_.reset(new AwNetworkDelegate());
+ normal_context->GetURLRequestContext()->set_network_delegate(
+ network_delegate_.get());
+ incognito_context->GetURLRequestContext()->set_network_delegate(
+ network_delegate_.get());
+}
+
+void AwBrowserDependencyFactoryImpl::EnsureNetworkDelegateInitialized() {
+ if (initialized_network_delegate_)
+ return;
+ initialized_network_delegate_ = true;
Profile* profile = g_browser_process->profile_manager()->GetDefaultProfile();
- if (incognito)
- profile = profile->GetOffTheRecordProfile();
+ profile->GetRequestContext()->GetNetworkTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(
+ &AwBrowserDependencyFactoryImpl::InitializeNetworkDelegateOnIOThread,
+ base::Unretained(this),
+ make_scoped_refptr(profile->GetRequestContext()),
+ make_scoped_refptr(
+ profile->GetOffTheRecordProfile()->GetRequestContext())));
+}
+
+content::BrowserContext* AwBrowserDependencyFactoryImpl::GetBrowserContext(
+ bool incognito) {
+ EnsureNetworkDelegateInitialized();
+ Profile* profile = g_browser_process->profile_manager()->GetDefaultProfile();
+ return incognito ? profile->GetOffTheRecordProfile() : profile;
+}
- return content::WebContents::Create(profile, 0, MSG_ROUTING_NONE, 0);
+WebContents* AwBrowserDependencyFactoryImpl::CreateWebContents(bool incognito) {
+ return content::WebContents::Create(
+ GetBrowserContext(incognito), 0, MSG_ROUTING_NONE, 0);
}
AwContentsContainer* AwBrowserDependencyFactoryImpl::CreateContentsContainer(
« no previous file with comments | « android_webview/lib/aw_browser_dependency_factory_impl.h ('k') | android_webview/lib/aw_content_browser_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698