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

Side by Side Diff: content/browser/loader/resource_dispatcher_host_impl.cc

Issue 2905763002: Deduplicating CanReadRequestBody code. (Closed)
Patch Set: Rebasing... Created 3 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
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.cc ('k') | 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading
6 6
7 #include "content/browser/loader/resource_dispatcher_host_impl.h" 7 #include "content/browser/loader/resource_dispatcher_host_impl.h"
8 8
9 #include <stddef.h> 9 #include <stddef.h>
10 10
(...skipping 2645 matching lines...) Expand 10 before | Expand all | Expand 10 after
2656 GURL origin(origin_string); 2656 GURL origin(origin_string);
2657 if (!policy->CanSetAsOriginHeader(child_id, origin)) { 2657 if (!policy->CanSetAsOriginHeader(child_id, origin)) {
2658 VLOG(1) << "Killed renderer for illegal origin: " << origin_string; 2658 VLOG(1) << "Killed renderer for illegal origin: " << origin_string;
2659 bad_message::ReceivedBadMessage(requester_info->filter(), 2659 bad_message::ReceivedBadMessage(requester_info->filter(),
2660 bad_message::RDH_ILLEGAL_ORIGIN); 2660 bad_message::RDH_ILLEGAL_ORIGIN);
2661 return false; 2661 return false;
2662 } 2662 }
2663 } 2663 }
2664 2664
2665 // Check if the renderer is permitted to upload the requested files. 2665 // Check if the renderer is permitted to upload the requested files.
2666 if (request_data.request_body.get()) { 2666 if (!policy->CanReadRequestBody(child_id,
2667 const std::vector<ResourceRequestBodyImpl::Element>* uploads = 2667 requester_info->file_system_context(),
2668 request_data.request_body->elements(); 2668 request_data.request_body)) {
2669 std::vector<ResourceRequestBodyImpl::Element>::const_iterator iter; 2669 NOTREACHED() << "Denied unauthorized upload";
2670 for (iter = uploads->begin(); iter != uploads->end(); ++iter) { 2670 return false;
2671 if (iter->type() == ResourceRequestBodyImpl::Element::TYPE_FILE &&
2672 !policy->CanReadFile(child_id, iter->path())) {
2673 NOTREACHED() << "Denied unauthorized upload of "
2674 << iter->path().value();
2675 return false;
2676 }
2677 if (iter->type() ==
2678 ResourceRequestBodyImpl::Element::TYPE_FILE_FILESYSTEM) {
2679 storage::FileSystemURL url =
2680 requester_info->file_system_context()->CrackURL(
2681 iter->filesystem_url());
2682 if (!policy->CanReadFileSystemFile(child_id, url)) {
2683 NOTREACHED() << "Denied unauthorized upload of "
2684 << iter->filesystem_url().spec();
2685 return false;
2686 }
2687 }
2688 }
2689 } 2671 }
2672
2690 return true; 2673 return true;
2691 } 2674 }
2692 2675
2693 std::unique_ptr<ResourceHandler> 2676 std::unique_ptr<ResourceHandler>
2694 ResourceDispatcherHostImpl::HandleDownloadStarted( 2677 ResourceDispatcherHostImpl::HandleDownloadStarted(
2695 net::URLRequest* request, 2678 net::URLRequest* request,
2696 std::unique_ptr<ResourceHandler> handler, 2679 std::unique_ptr<ResourceHandler> handler,
2697 bool is_content_initiated, 2680 bool is_content_initiated,
2698 bool must_download, 2681 bool must_download,
2699 bool is_new_request) { 2682 bool is_new_request) {
2700 if (delegate()) { 2683 if (delegate()) {
2701 const ResourceRequestInfoImpl* request_info( 2684 const ResourceRequestInfoImpl* request_info(
2702 ResourceRequestInfoImpl::ForRequest(request)); 2685 ResourceRequestInfoImpl::ForRequest(request));
2703 std::vector<std::unique_ptr<ResourceThrottle>> throttles; 2686 std::vector<std::unique_ptr<ResourceThrottle>> throttles;
2704 delegate()->DownloadStarting(request, request_info->GetContext(), 2687 delegate()->DownloadStarting(request, request_info->GetContext(),
2705 is_content_initiated, true, is_new_request, 2688 is_content_initiated, true, is_new_request,
2706 &throttles); 2689 &throttles);
2707 if (!throttles.empty()) { 2690 if (!throttles.empty()) {
2708 handler.reset(new ThrottlingResourceHandler(std::move(handler), request, 2691 handler.reset(new ThrottlingResourceHandler(std::move(handler), request,
2709 std::move(throttles))); 2692 std::move(throttles)));
2710 } 2693 }
2711 } 2694 }
2712 return handler; 2695 return handler;
2713 } 2696 }
2714 2697
2715 } // namespace content 2698 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698