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

Side by Side Diff: chrome/browser/prerender/external_prerender_handler_android.cc

Issue 2697513009: Enable forced prerenders on wifi (Closed)
Patch Set: Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/prerender/external_prerender_handler_android.h" 5 #include "chrome/browser/prerender/external_prerender_handler_android.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/browser_process.h" 11 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/prerender/prerender_handle.h" 12 #include "chrome/browser/prerender/prerender_handle.h"
13 #include "chrome/browser/prerender/prerender_manager.h" 13 #include "chrome/browser/prerender/prerender_manager.h"
14 #include "chrome/browser/prerender/prerender_manager_factory.h" 14 #include "chrome/browser/prerender/prerender_manager_factory.h"
15 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/browser/profiles/profile_android.h" 16 #include "chrome/browser/profiles/profile_android.h"
17 #include "content/public/browser/web_contents.h" 17 #include "content/public/browser/web_contents.h"
18 #include "jni/ExternalPrerenderHandler_jni.h" 18 #include "jni/ExternalPrerenderHandler_jni.h"
19 #include "net/base/network_change_notifier.h"
20 19
21 using base::android::ConvertJavaStringToUTF16; 20 using base::android::ConvertJavaStringToUTF16;
22 using base::android::JavaParamRef; 21 using base::android::JavaParamRef;
23 22
24 namespace prerender { 23 namespace prerender {
25 24
26 namespace { 25 namespace {
27 26
28 bool CheckAndConvertParams(JNIEnv* env, 27 bool CheckAndConvertParams(JNIEnv* env,
29 const JavaParamRef<jobject>& jprofile, 28 const JavaParamRef<jobject>& jprofile,
(...skipping 14 matching lines...) Expand all
44 if (!*prerender_manager) 43 if (!*prerender_manager)
45 return false; 44 return false;
46 45
47 *web_contents = content::WebContents::FromJavaWebContents(jweb_contents); 46 *web_contents = content::WebContents::FromJavaWebContents(jweb_contents);
48 return true; 47 return true;
49 } 48 }
50 49
51 } // namespace 50 } // namespace
52 51
53 base::android::ScopedJavaLocalRef<jobject> 52 base::android::ScopedJavaLocalRef<jobject>
54 ExternalPrerenderHandlerAndroid::AddPrerender( 53 ExternalPrerenderHandlerAndroid::AddPrerender(
55 JNIEnv* env, 54 JNIEnv* env,
56 const JavaParamRef<jobject>& obj, 55 const JavaParamRef<jobject>& obj,
57 const JavaParamRef<jobject>& jprofile, 56 const JavaParamRef<jobject>& jprofile,
58 const JavaParamRef<jobject>& jweb_contents, 57 const JavaParamRef<jobject>& jweb_contents,
59 const JavaParamRef<jstring>& jurl, 58 const JavaParamRef<jstring>& jurl,
60 const JavaParamRef<jstring>& jreferrer, 59 const JavaParamRef<jstring>& jreferrer,
61 jint top, 60 jint top,
62 jint left, 61 jint left,
63 jint bottom, 62 jint bottom,
64 jint right, 63 jint right,
65 jboolean prerender_on_cellular) { 64 jboolean forced_prerender) {
66 Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile); 65 Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile);
67 66
68 GURL url = GURL(ConvertJavaStringToUTF16(env, jurl)); 67 GURL url = GURL(ConvertJavaStringToUTF16(env, jurl));
69 if (!url.is_valid()) 68 if (!url.is_valid())
70 return nullptr; 69 return nullptr;
71 content::Referrer referrer; 70 content::Referrer referrer;
72 if (!jreferrer.is_null()) { 71 if (!jreferrer.is_null()) {
73 GURL referrer_url(ConvertJavaStringToUTF16(env, jreferrer)); 72 GURL referrer_url(ConvertJavaStringToUTF16(env, jreferrer));
74 if (referrer_url.is_valid()) { 73 if (referrer_url.is_valid()) {
75 referrer = 74 referrer =
76 content::Referrer(referrer_url, blink::WebReferrerPolicyDefault); 75 content::Referrer(referrer_url, blink::WebReferrerPolicyDefault);
77 } 76 }
78 } 77 }
79 78
80 PrerenderManager* prerender_manager = 79 PrerenderManager* prerender_manager =
81 PrerenderManagerFactory::GetForBrowserContext(profile); 80 PrerenderManagerFactory::GetForBrowserContext(profile);
82 if (!prerender_manager) 81 if (!prerender_manager)
83 return nullptr; 82 return nullptr;
84 83
85 content::WebContents* web_contents = 84 content::WebContents* web_contents =
86 content::WebContents::FromJavaWebContents(jweb_contents); 85 content::WebContents::FromJavaWebContents(jweb_contents);
87 if (prerender_handle_) 86 if (prerender_handle_)
88 prerender_handle_->OnNavigateAway(); 87 prerender_handle_->OnNavigateAway();
89 88
90 if (prerender_on_cellular && net::NetworkChangeNotifier::IsConnectionCellular( 89 if (forced_prerender) {
91 net::NetworkChangeNotifier::GetConnectionType())) {
92 prerender_handle_ = 90 prerender_handle_ =
93 prerender_manager->AddPrerenderOnCellularFromExternalRequest( 91 prerender_manager->AddForcedPrerenderFromExternalRequest(
94 url, referrer, 92 url, referrer,
95 web_contents->GetController().GetDefaultSessionStorageNamespace(), 93 web_contents->GetController().GetDefaultSessionStorageNamespace(),
96 gfx::Rect(left, top, right - left, bottom - top)); 94 gfx::Rect(left, top, right - left, bottom - top));
97 } else { 95 } else {
98 prerender_handle_ = prerender_manager->AddPrerenderFromExternalRequest( 96 prerender_handle_ = prerender_manager->AddPrerenderFromExternalRequest(
99 url, referrer, 97 url, referrer,
100 web_contents->GetController().GetDefaultSessionStorageNamespace(), 98 web_contents->GetController().GetDefaultSessionStorageNamespace(),
101 gfx::Rect(left, top, right - left, bottom - top)); 99 gfx::Rect(left, top, right - left, bottom - top));
102 } 100 }
103 101
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 new ExternalPrerenderHandlerAndroid(); 158 new ExternalPrerenderHandlerAndroid();
161 return reinterpret_cast<intptr_t>(external_handler); 159 return reinterpret_cast<intptr_t>(external_handler);
162 } 160 }
163 161
164 bool ExternalPrerenderHandlerAndroid::RegisterExternalPrerenderHandlerAndroid( 162 bool ExternalPrerenderHandlerAndroid::RegisterExternalPrerenderHandlerAndroid(
165 JNIEnv* env) { 163 JNIEnv* env) {
166 return RegisterNativesImpl(env); 164 return RegisterNativesImpl(env);
167 } 165 }
168 166
169 } // namespace prerender 167 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/external_prerender_handler_android.h ('k') | chrome/browser/prerender/prerender_histograms.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698