| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index 17d8764e90f8b8d4f2b6049c8fbf9f7f0328b205..4290e79b76e77825bfee928fc6dc161da89c9559 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -3382,7 +3382,7 @@ void RenderFrameImpl::showContextMenu(const blink::WebContextMenuData& data) {
|
| // in the context menu.
|
| // TODO(jcivelli): http://crbug.com/45160 This prevents us from saving large
|
| // data encoded images. We should have a way to save them.
|
| - if (params.src_url.spec().size() > GetMaxURLChars())
|
| + if (params.src_url.spec().size() > kMaxURLChars)
|
| params.src_url = GURL();
|
| context_menu_node_ = data.node;
|
|
|
| @@ -4898,7 +4898,7 @@ void RenderFrameImpl::NavigateInternal(
|
| if (!common_params.base_url_for_data_url.is_empty() ||
|
| (browser_side_navigation &&
|
| common_params.url.SchemeIs(url::kDataScheme))) {
|
| - LoadDataURL(common_params, frame_, load_type);
|
| + LoadDataURL(common_params, request_params, frame_, load_type);
|
| } else {
|
| // Load the request.
|
| frame_->toWebLocalFrame()->load(request, load_type,
|
| @@ -5138,11 +5138,28 @@ void RenderFrameImpl::BeginNavigation(blink::WebURLRequest* request) {
|
| }
|
|
|
| void RenderFrameImpl::LoadDataURL(const CommonNavigationParams& params,
|
| + const RequestNavigationParams& request_params,
|
| WebFrame* frame,
|
| blink::WebFrameLoadType load_type) {
|
| // A loadData request with a specified base URL.
|
| + GURL data_url = params.url;
|
| +#if defined(OS_ANDROID)
|
| + if (!request_params.data_url_as_string.empty()) {
|
| +#if DCHECK_IS_ON()
|
| + {
|
| + std::string mime_type, charset, data;
|
| + DCHECK(net::DataURL::Parse(data_url, &mime_type, &charset, &data));
|
| + DCHECK(data.empty());
|
| + }
|
| +#endif
|
| + data_url = GURL(request_params.data_url_as_string);
|
| + if (!data_url.is_valid() || !data_url.SchemeIs(url::kDataScheme)) {
|
| + data_url = params.url;
|
| + }
|
| + }
|
| +#endif
|
| std::string mime_type, charset, data;
|
| - if (net::DataURL::Parse(params.url, &mime_type, &charset, &data)) {
|
| + if (net::DataURL::Parse(data_url, &mime_type, &charset, &data)) {
|
| const GURL base_url = params.base_url_for_data_url.is_empty() ?
|
| params.url : params.base_url_for_data_url;
|
| bool replace = load_type == blink::WebFrameLoadType::ReloadFromOrigin ||
|
|
|