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

Side by Side Diff: content/browser/frame_host/navigation_controller_android.cc

Issue 1497743005: Allow huge data: URIs only via WebView.loadDataWithBaseUrl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make specific to Android, use RefCountedString Created 5 years 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 "content/browser/frame_host/navigation_controller_android.h" 5 #include "content/browser/frame_host/navigation_controller_android.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_array.h" 8 #include "base/android/jni_array.h"
9 #include "base/android/jni_string.h" 9 #include "base/android/jni_string.h"
10 #include "content/browser/frame_host/navigation_entry_impl.h" 10 #include "content/browser/frame_host/navigation_entry_impl.h"
11 #include "content/public/browser/browser_context.h" 11 #include "content/public/browser/browser_context.h"
12 #include "content/public/browser/navigation_controller.h" 12 #include "content/public/browser/navigation_controller.h"
13 #include "content/public/browser/ssl_host_state_delegate.h" 13 #include "content/public/browser/ssl_host_state_delegate.h"
14 #include "jni/NavigationControllerImpl_jni.h" 14 #include "jni/NavigationControllerImpl_jni.h"
15 #include "net/base/data_url.h"
15 #include "ui/gfx/android/java_bitmap.h" 16 #include "ui/gfx/android/java_bitmap.h"
16 17
17 using base::android::AttachCurrentThread; 18 using base::android::AttachCurrentThread;
18 using base::android::ConvertJavaStringToUTF16; 19 using base::android::ConvertJavaStringToUTF16;
19 using base::android::ConvertJavaStringToUTF8; 20 using base::android::ConvertJavaStringToUTF8;
20 using base::android::ConvertUTF16ToJavaString; 21 using base::android::ConvertUTF16ToJavaString;
21 using base::android::ConvertUTF8ToJavaString; 22 using base::android::ConvertUTF8ToJavaString;
22 namespace { 23 namespace {
23 24
24 // static 25 // static
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 const JavaParamRef<jstring>& url, 189 const JavaParamRef<jstring>& url,
189 jint load_url_type, 190 jint load_url_type,
190 jint transition_type, 191 jint transition_type,
191 const JavaParamRef<jstring>& j_referrer_url, 192 const JavaParamRef<jstring>& j_referrer_url,
192 jint referrer_policy, 193 jint referrer_policy,
193 jint ua_override_option, 194 jint ua_override_option,
194 const JavaParamRef<jstring>& extra_headers, 195 const JavaParamRef<jstring>& extra_headers,
195 const JavaParamRef<jbyteArray>& post_data, 196 const JavaParamRef<jbyteArray>& post_data,
196 const JavaParamRef<jstring>& base_url_for_data_url, 197 const JavaParamRef<jstring>& base_url_for_data_url,
197 const JavaParamRef<jstring>& virtual_url_for_data_url, 198 const JavaParamRef<jstring>& virtual_url_for_data_url,
199 const JavaParamRef<jstring>& data_url_as_string,
198 jboolean can_load_local_resources, 200 jboolean can_load_local_resources,
199 jboolean is_renderer_initiated, 201 jboolean is_renderer_initiated,
200 jboolean should_replace_current_entry) { 202 jboolean should_replace_current_entry) {
201 DCHECK(url); 203 DCHECK(url);
202 NavigationController::LoadURLParams params( 204 NavigationController::LoadURLParams params(
203 GURL(ConvertJavaStringToUTF8(env, url))); 205 GURL(ConvertJavaStringToUTF8(env, url)));
204 206
205 params.load_type = 207 params.load_type =
206 static_cast<NavigationController::LoadURLType>(load_url_type); 208 static_cast<NavigationController::LoadURLType>(load_url_type);
207 params.transition_type = ui::PageTransitionFromInt(transition_type); 209 params.transition_type = ui::PageTransitionFromInt(transition_type);
(...skipping 17 matching lines...) Expand all
225 if (base_url_for_data_url) { 227 if (base_url_for_data_url) {
226 params.base_url_for_data_url = 228 params.base_url_for_data_url =
227 GURL(ConvertJavaStringToUTF8(env, base_url_for_data_url)); 229 GURL(ConvertJavaStringToUTF8(env, base_url_for_data_url));
228 } 230 }
229 231
230 if (virtual_url_for_data_url) { 232 if (virtual_url_for_data_url) {
231 params.virtual_url_for_data_url = 233 params.virtual_url_for_data_url =
232 GURL(ConvertJavaStringToUTF8(env, virtual_url_for_data_url)); 234 GURL(ConvertJavaStringToUTF8(env, virtual_url_for_data_url));
233 } 235 }
234 236
237 if (data_url_as_string) {
238 // Treat |data_url_as_string| as if we were intenting to put it into a GURL
Charlie Reis 2015/12/14 20:35:57 nit: intending
mnaganov (inactive) 2015/12/15 18:30:29 Done.
239 // field. Note that kMaxURLChars is only enforced when serializing URLs
240 // for IPC.
241 GURL data_url = GURL(ConvertJavaStringToUTF8(env, data_url_as_string));
242 DCHECK(data_url.SchemeIs(url::kDataScheme));
243 DCHECK(params.url.SchemeIs(url::kDataScheme));
244 #if DCHECK_IS_ON()
245 {
246 std::string mime_type, charset, data;
247 DCHECK(net::DataURL::Parse(params.url, &mime_type, &charset, &data));
248 DCHECK(data.empty());
249 }
250 #endif
251 std::string s = data_url.spec();
252 params.data_url_as_string = base::RefCountedString::TakeString(&s);
253 }
254
235 if (j_referrer_url) { 255 if (j_referrer_url) {
236 params.referrer = content::Referrer( 256 params.referrer = content::Referrer(
237 GURL(ConvertJavaStringToUTF8(env, j_referrer_url)), 257 GURL(ConvertJavaStringToUTF8(env, j_referrer_url)),
238 static_cast<blink::WebReferrerPolicy>(referrer_policy)); 258 static_cast<blink::WebReferrerPolicy>(referrer_policy));
239 } 259 }
240 260
241 navigation_controller_->LoadURLWithParams(params); 261 navigation_controller_->LoadURLWithParams(params);
242 } 262 }
243 263
244 void NavigationControllerAndroid::ClearHistory( 264 void NavigationControllerAndroid::ClearHistory(
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 const JavaParamRef<jobject>& obj, 419 const JavaParamRef<jobject>& obj,
400 jlong source_navigation_controller_android, 420 jlong source_navigation_controller_android,
401 jboolean replace_entry) { 421 jboolean replace_entry) {
402 navigation_controller_->CopyStateFromAndPrune( 422 navigation_controller_->CopyStateFromAndPrune(
403 reinterpret_cast<NavigationControllerAndroid*>( 423 reinterpret_cast<NavigationControllerAndroid*>(
404 source_navigation_controller_android)->navigation_controller_, 424 source_navigation_controller_android)->navigation_controller_,
405 replace_entry); 425 replace_entry);
406 } 426 }
407 427
408 } // namespace content 428 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698