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

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

Issue 1828193002: DCHECK that jstring to C++ string conversions don't pass in null. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix all the things Created 4 years, 8 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"
(...skipping 14 matching lines...) Expand all
25 namespace { 25 namespace {
26 26
27 static bool CheckAndConvertParams( 27 static bool CheckAndConvertParams(
28 JNIEnv* env, 28 JNIEnv* env,
29 const JavaParamRef<jobject>& jprofile, 29 const JavaParamRef<jobject>& jprofile,
30 const JavaParamRef<jstring>& jurl, 30 const JavaParamRef<jstring>& jurl,
31 const JavaParamRef<jobject>& jweb_contents, 31 const JavaParamRef<jobject>& jweb_contents,
32 GURL* url, 32 GURL* url,
33 prerender::PrerenderManager** prerender_manager, 33 prerender::PrerenderManager** prerender_manager,
34 content::WebContents** web_contents) { 34 content::WebContents** web_contents) {
35 if (jurl == NULL) 35 if (!jurl)
36 return false; 36 return false;
37
37 *url = GURL(ConvertJavaStringToUTF16(env, jurl)); 38 *url = GURL(ConvertJavaStringToUTF16(env, jurl));
38 if (!url->is_valid()) 39 if (!url->is_valid())
39 return false; 40 return false;
40 41
41 Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile); 42 Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile);
42 *prerender_manager = 43 *prerender_manager =
43 prerender::PrerenderManagerFactory::GetForProfile(profile); 44 prerender::PrerenderManagerFactory::GetForProfile(profile);
44 if (!*prerender_manager) 45 if (!*prerender_manager)
45 return false; 46 return false;
47
46 *web_contents = content::WebContents::FromJavaWebContents(jweb_contents); 48 *web_contents = content::WebContents::FromJavaWebContents(jweb_contents);
47 return true; 49 return true;
48 } 50 }
49 51
50 } // namespace 52 } // namespace
51 53
52 bool ExternalPrerenderHandlerAndroid::AddPrerender( 54 bool ExternalPrerenderHandlerAndroid::AddPrerender(
53 JNIEnv* env, 55 JNIEnv* env,
54 const JavaParamRef<jobject>& obj, 56 const JavaParamRef<jobject>& obj,
55 const JavaParamRef<jobject>& jprofile, 57 const JavaParamRef<jobject>& jprofile,
56 const JavaParamRef<jobject>& jweb_contents, 58 const JavaParamRef<jobject>& jweb_contents,
57 const JavaParamRef<jstring>& jurl, 59 const JavaParamRef<jstring>& jurl,
58 const JavaParamRef<jstring>& jreferrer, 60 const JavaParamRef<jstring>& jreferrer,
59 jint width, 61 jint width,
60 jint height, 62 jint height,
61 jboolean prerender_on_cellular) { 63 jboolean prerender_on_cellular) {
62 Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile); 64 Profile* profile = ProfileAndroid::FromProfileAndroid(jprofile);
63 65
64 GURL url = GURL(ConvertJavaStringToUTF16(env, jurl)); 66 GURL url = GURL(ConvertJavaStringToUTF16(env, jurl));
65 if (!url.is_valid()) 67 if (!url.is_valid())
66 return false; 68 return false;
67 69
68 GURL referrer_url = GURL(ConvertJavaStringToUTF16(env, jreferrer)); 70 content::Referrer referrer;
69 content::Referrer referrer = referrer_url.is_valid() ? 71 if (!jreferrer.is_null()) {
mmenke 2016/03/30 14:52:57 None of these changes seem to fall under the rubri
Bernhard Bauer 2016/03/30 15:52:09 Done.
70 content::Referrer(referrer_url, blink::WebReferrerPolicyDefault) : 72 GURL referrer_url(ConvertJavaStringToUTF16(env, jreferrer));
71 content::Referrer(); 73 if (referrer_url.is_valid())
74 referrer =
75 content::Referrer(referrer_url, blink::WebReferrerPolicyDefault);
76 }
77
72 PrerenderManager* prerender_manager = 78 PrerenderManager* prerender_manager =
73 prerender::PrerenderManagerFactory::GetForProfile(profile); 79 prerender::PrerenderManagerFactory::GetForProfile(profile);
74 if (!prerender_manager) 80 if (!prerender_manager)
75 return false; 81 return false;
82
76 content::WebContents* web_contents = 83 content::WebContents* web_contents =
77 content::WebContents::FromJavaWebContents(jweb_contents); 84 content::WebContents::FromJavaWebContents(jweb_contents);
78 if (prerender_handle_.get()) { 85 if (prerender_handle_)
79 prerender_handle_->OnNavigateAway(); 86 prerender_handle_->OnNavigateAway();
80 } 87
81 if (prerender_on_cellular && net::NetworkChangeNotifier::IsConnectionCellular( 88 if (prerender_on_cellular && net::NetworkChangeNotifier::IsConnectionCellular(
82 net::NetworkChangeNotifier::GetConnectionType())) { 89 net::NetworkChangeNotifier::GetConnectionType())) {
83 prerender_handle_.reset( 90 prerender_handle_.reset(
84 prerender_manager->AddPrerenderOnCellularFromExternalRequest( 91 prerender_manager->AddPrerenderOnCellularFromExternalRequest(
85 url, 92 url,
86 referrer, 93 referrer,
87 web_contents->GetController().GetDefaultSessionStorageNamespace(), 94 web_contents->GetController().GetDefaultSessionStorageNamespace(),
88 gfx::Size(width, height))); 95 gfx::Size(width, height)));
89 } else { 96 } else {
90 prerender_handle_.reset( 97 prerender_handle_.reset(
91 prerender_manager->AddPrerenderFromExternalRequest( 98 prerender_manager->AddPrerenderFromExternalRequest(
92 url, 99 url,
93 referrer, 100 referrer,
94 web_contents->GetController().GetDefaultSessionStorageNamespace(), 101 web_contents->GetController().GetDefaultSessionStorageNamespace(),
95 gfx::Size(width, height))); 102 gfx::Size(width, height)));
96 } 103 }
97 104
98 if (!prerender_handle_) 105 return !!prerender_handle_;
99 return false;
100 return true;
101 } 106 }
102 107
103 void ExternalPrerenderHandlerAndroid::CancelCurrentPrerender( 108 void ExternalPrerenderHandlerAndroid::CancelCurrentPrerender(
104 JNIEnv* env, 109 JNIEnv* env,
105 const JavaParamRef<jobject>& object) { 110 const JavaParamRef<jobject>& object) {
106 if (!prerender_handle_) 111 if (!prerender_handle_)
107 return; 112 return;
113
108 prerender_handle_->OnCancel(); 114 prerender_handle_->OnCancel();
109 prerender_handle_.reset(); 115 prerender_handle_.reset();
110 } 116 }
111 117
112 static jboolean HasPrerenderedUrl(JNIEnv* env, 118 static jboolean HasPrerenderedUrl(JNIEnv* env,
113 const JavaParamRef<jclass>& clazz, 119 const JavaParamRef<jclass>& clazz,
114 const JavaParamRef<jobject>& jprofile, 120 const JavaParamRef<jobject>& jprofile,
115 const JavaParamRef<jstring>& jurl, 121 const JavaParamRef<jstring>& jurl,
116 const JavaParamRef<jobject>& jweb_contents) { 122 const JavaParamRef<jobject>& jweb_contents) {
117 GURL url; 123 GURL url;
118 prerender::PrerenderManager* prerender_manager; 124 prerender::PrerenderManager* prerender_manager;
119 content::WebContents* web_contents; 125 content::WebContents* web_contents;
120 if (!CheckAndConvertParams(env, jprofile, jurl, jweb_contents, &url, 126 if (!CheckAndConvertParams(env, jprofile, jurl, jweb_contents, &url,
121 &prerender_manager, &web_contents)) 127 &prerender_manager, &web_contents))
122 return false; 128 return false;
129
123 return prerender_manager->HasPrerenderedUrl(url, web_contents); 130 return prerender_manager->HasPrerenderedUrl(url, web_contents);
124 } 131 }
125 132
126 static jboolean HasPrerenderedAndFinishedLoadingUrl( 133 static jboolean HasPrerenderedAndFinishedLoadingUrl(
127 JNIEnv* env, 134 JNIEnv* env,
128 const JavaParamRef<jclass>& clazz, 135 const JavaParamRef<jclass>& clazz,
129 const JavaParamRef<jobject>& jprofile, 136 const JavaParamRef<jobject>& jprofile,
130 const JavaParamRef<jstring>& jurl, 137 const JavaParamRef<jstring>& jurl,
131 const JavaParamRef<jobject>& jweb_contents) { 138 const JavaParamRef<jobject>& jweb_contents) {
132 GURL url; 139 GURL url;
133 prerender::PrerenderManager* prerender_manager; 140 prerender::PrerenderManager* prerender_manager;
134 content::WebContents* web_contents; 141 content::WebContents* web_contents;
135 if (!CheckAndConvertParams(env, jprofile, jurl, jweb_contents, &url, 142 if (!CheckAndConvertParams(env, jprofile, jurl, jweb_contents, &url,
136 &prerender_manager, &web_contents)) 143 &prerender_manager, &web_contents))
137 return false; 144 return false;
145
138 return prerender_manager->HasPrerenderedAndFinishedLoadingUrl(url, 146 return prerender_manager->HasPrerenderedAndFinishedLoadingUrl(url,
139 web_contents); 147 web_contents);
140 } 148 }
141 149
142 ExternalPrerenderHandlerAndroid::ExternalPrerenderHandlerAndroid() {} 150 ExternalPrerenderHandlerAndroid::ExternalPrerenderHandlerAndroid() {}
143 151
144 ExternalPrerenderHandlerAndroid::~ExternalPrerenderHandlerAndroid() {} 152 ExternalPrerenderHandlerAndroid::~ExternalPrerenderHandlerAndroid() {}
145 153
146 static jlong Init(JNIEnv* env, const JavaParamRef<jclass>& clazz) { 154 static jlong Init(JNIEnv* env, const JavaParamRef<jclass>& clazz) {
147 ExternalPrerenderHandlerAndroid* external_handler = 155 ExternalPrerenderHandlerAndroid* external_handler =
148 new ExternalPrerenderHandlerAndroid(); 156 new ExternalPrerenderHandlerAndroid();
149 return reinterpret_cast<intptr_t>(external_handler); 157 return reinterpret_cast<intptr_t>(external_handler);
150 } 158 }
151 159
152 bool ExternalPrerenderHandlerAndroid::RegisterExternalPrerenderHandlerAndroid( 160 bool ExternalPrerenderHandlerAndroid::RegisterExternalPrerenderHandlerAndroid(
153 JNIEnv* env) { 161 JNIEnv* env) {
154 return RegisterNativesImpl(env); 162 return RegisterNativesImpl(env);
155 } 163 }
156 164
157 } // namespace prerender 165 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698