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

Side by Side Diff: components/dom_distiller/content/dom_distiller_viewer_source.cc

Issue 693053002: Fix issue with DOM Distiller viewer when renderer goes away. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/dom_distiller/content/dom_distiller_viewer_source.h" 5 #include "components/dom_distiller/content/dom_distiller_viewer_source.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 return scheme_ + "://"; 261 return scheme_ + "://";
262 } 262 }
263 263
264 void DomDistillerViewerSource::StartDataRequest( 264 void DomDistillerViewerSource::StartDataRequest(
265 const std::string& path, 265 const std::string& path,
266 int render_process_id, 266 int render_process_id,
267 int render_frame_id, 267 int render_frame_id,
268 const content::URLDataSource::GotDataCallback& callback) { 268 const content::URLDataSource::GotDataCallback& callback) {
269 content::RenderFrameHost* render_frame_host = 269 content::RenderFrameHost* render_frame_host =
270 content::RenderFrameHost::FromID(render_process_id, render_frame_id); 270 content::RenderFrameHost::FromID(render_process_id, render_frame_id);
271 DCHECK(render_frame_host); 271 if (!render_frame_host) return;
272 content::RenderViewHost* render_view_host = 272 content::RenderViewHost* render_view_host =
273 render_frame_host->GetRenderViewHost(); 273 render_frame_host->GetRenderViewHost();
274 DCHECK(render_view_host); 274 DCHECK(render_view_host);
275 CHECK_EQ(0, render_view_host->GetEnabledBindings()); 275 CHECK_EQ(0, render_view_host->GetEnabledBindings());
276 276
277 if (kViewerCssPath == path) { 277 if (kViewerCssPath == path) {
278 std::string css = viewer::GetCss(); 278 std::string css = viewer::GetCss();
279 callback.Run(base::RefCountedString::TakeString(&css)); 279 callback.Run(base::RefCountedString::TakeString(&css));
280 return; 280 return;
281 } 281 }
282 if (kViewerJsPath == path) { 282 if (kViewerJsPath == path) {
283 std::string js = viewer::GetJavaScript(); 283 std::string js = viewer::GetJavaScript();
284 callback.Run(base::RefCountedString::TakeString(&js)); 284 callback.Run(base::RefCountedString::TakeString(&js));
285 return; 285 return;
286 } 286 }
287 if (kViewerViewOriginalPath == path) { 287 if (kViewerViewOriginalPath == path) {
288 content::RecordAction(base::UserMetricsAction("DomDistiller_ViewOriginal")); 288 content::RecordAction(base::UserMetricsAction("DomDistiller_ViewOriginal"));
289 callback.Run(NULL); 289 callback.Run(NULL);
290 return; 290 return;
291 } 291 }
292 content::WebContents* web_contents = 292 content::WebContents* web_contents =
293 content::WebContents::FromRenderFrameHost( 293 content::WebContents::FromRenderFrameHost(render_frame_host);
294 content::RenderFrameHost::FromID(render_process_id,
295 render_frame_id));
296 DCHECK(web_contents); 294 DCHECK(web_contents);
297 // An empty |path| is invalid, but guard against it. If not empty, assume 295 // An empty |path| is invalid, but guard against it. If not empty, assume
298 // |path| starts with '?', which is stripped away. 296 // |path| starts with '?', which is stripped away.
299 const std::string path_after_query_separator = 297 const std::string path_after_query_separator =
300 path.size() > 0 ? path.substr(1) : ""; 298 path.size() > 0 ? path.substr(1) : "";
301 RequestViewerHandle* request_viewer_handle = new RequestViewerHandle( 299 RequestViewerHandle* request_viewer_handle = new RequestViewerHandle(
302 web_contents, scheme_, path_after_query_separator, callback, 300 web_contents, scheme_, path_after_query_separator, callback,
303 dom_distiller_service_->GetDistilledPagePrefs()); 301 dom_distiller_service_->GetDistilledPagePrefs());
304 scoped_ptr<ViewerHandle> viewer_handle = viewer::CreateViewRequest( 302 scoped_ptr<ViewerHandle> viewer_handle = viewer::CreateViewRequest(
305 dom_distiller_service_, path, request_viewer_handle, 303 dom_distiller_service_, path, request_viewer_handle,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 const net::URLRequest* request, 342 const net::URLRequest* request,
345 std::string* path) const { 343 std::string* path) const {
346 } 344 }
347 345
348 std::string DomDistillerViewerSource::GetContentSecurityPolicyObjectSrc() 346 std::string DomDistillerViewerSource::GetContentSecurityPolicyObjectSrc()
349 const { 347 const {
350 return "object-src 'none'; style-src 'self' https://fonts.googleapis.com;"; 348 return "object-src 'none'; style-src 'self' https://fonts.googleapis.com;";
351 } 349 }
352 350
353 } // namespace dom_distiller 351 } // namespace dom_distiller
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698