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

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

Issue 288353002: [dom_distiller] Fix crash for invalid chrome-distiller:// requests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Change to use ASSERT_TRUE instead of DCHECK Created 6 years, 7 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 | Annotate | Revision Log
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 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 if (kViewerJsPath == path) { 266 if (kViewerJsPath == path) {
267 std::string js = viewer::GetJavaScript(); 267 std::string js = viewer::GetJavaScript();
268 callback.Run(base::RefCountedString::TakeString(&js)); 268 callback.Run(base::RefCountedString::TakeString(&js));
269 return; 269 return;
270 } 270 }
271 content::WebContents* web_contents = 271 content::WebContents* web_contents =
272 content::WebContents::FromRenderFrameHost( 272 content::WebContents::FromRenderFrameHost(
273 content::RenderFrameHost::FromID(render_process_id, 273 content::RenderFrameHost::FromID(render_process_id,
274 render_frame_id)); 274 render_frame_id));
275 DCHECK(web_contents); 275 DCHECK(web_contents);
276 RequestViewerHandle* request_viewer_handle = 276 // An empty |path| is invalid, but guard against it. If not empty, assume
277 new RequestViewerHandle(web_contents, scheme_, path.substr(1), callback); 277 // |path| starts with '?', which is stripped away.
278 const std::string path_after_query_separator =
279 path.size() > 0 ? path.substr(1) : "";
280 RequestViewerHandle* request_viewer_handle = new RequestViewerHandle(
281 web_contents, scheme_, path_after_query_separator, callback);
278 scoped_ptr<ViewerHandle> viewer_handle = viewer::CreateViewRequest( 282 scoped_ptr<ViewerHandle> viewer_handle = viewer::CreateViewRequest(
279 dom_distiller_service_, path, request_viewer_handle); 283 dom_distiller_service_, path, request_viewer_handle);
280 284
281 if (viewer_handle) { 285 if (viewer_handle) {
282 // The service returned a |ViewerHandle| and guarantees it will call 286 // The service returned a |ViewerHandle| and guarantees it will call
283 // the |RequestViewerHandle|, so passing ownership to it, to ensure the 287 // the |RequestViewerHandle|, so passing ownership to it, to ensure the
284 // request is not cancelled. The |RequestViewerHandle| will delete itself 288 // request is not cancelled. The |RequestViewerHandle| will delete itself
285 // after receiving the callback. 289 // after receiving the callback.
286 request_viewer_handle->TakeViewerHandle(viewer_handle.Pass()); 290 request_viewer_handle->TakeViewerHandle(viewer_handle.Pass());
287 } else { 291 } else {
(...skipping 27 matching lines...) Expand all
315 const net::URLRequest* request, 319 const net::URLRequest* request,
316 std::string* path) const { 320 std::string* path) const {
317 } 321 }
318 322
319 std::string DomDistillerViewerSource::GetContentSecurityPolicyObjectSrc() 323 std::string DomDistillerViewerSource::GetContentSecurityPolicyObjectSrc()
320 const { 324 const {
321 return "object-src 'none'; style-src 'self';"; 325 return "object-src 'none'; style-src 'self';";
322 } 326 }
323 327
324 } // namespace dom_distiller 328 } // namespace dom_distiller
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698