| Index: content/browser/loader/resource_dispatcher_host_impl.cc
|
| diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc
|
| index d90794dd367a0dd7acc88106f2d2cdfec06ca8ce..4c4f86c88bba0ba09fa1f6e67dc14f4dad2c7d82 100644
|
| --- a/content/browser/loader/resource_dispatcher_host_impl.cc
|
| +++ b/content/browser/loader/resource_dispatcher_host_impl.cc
|
| @@ -36,6 +36,7 @@
|
| #include "content/browser/loader/redirect_to_file_resource_handler.h"
|
| #include "content/browser/loader/resource_message_filter.h"
|
| #include "content/browser/loader/resource_request_info_impl.h"
|
| +#include "content/browser/loader/stream_resource_handler.h"
|
| #include "content/browser/loader/sync_resource_handler.h"
|
| #include "content/browser/loader/throttling_resource_handler.h"
|
| #include "content/browser/loader/transfer_navigation_resource_throttle.h"
|
| @@ -43,6 +44,9 @@
|
| #include "content/browser/renderer_host/render_view_host_delegate.h"
|
| #include "content/browser/renderer_host/render_view_host_impl.h"
|
| #include "content/browser/resource_context_impl.h"
|
| +#include "content/browser/streams/stream.h"
|
| +#include "content/browser/streams/stream_context.h"
|
| +#include "content/browser/streams/stream_registry.h"
|
| #include "content/browser/worker_host/worker_service_impl.h"
|
| #include "content/common/resource_messages.h"
|
| #include "content/common/ssl_status_serialization.h"
|
| @@ -55,6 +59,7 @@
|
| #include "content/public/browser/resource_dispatcher_host_delegate.h"
|
| #include "content/public/browser/resource_request_details.h"
|
| #include "content/public/browser/resource_throttle.h"
|
| +#include "content/public/browser/stream_handle.h"
|
| #include "content/public/browser/user_metrics.h"
|
| #include "content/public/common/content_switches.h"
|
| #include "content/public/common/process_type.h"
|
| @@ -553,6 +558,42 @@ ResourceDispatcherHostImpl::CreateResourceHandlerForDownload(
|
| return handler.Pass();
|
| }
|
|
|
| +scoped_ptr<ResourceHandler>
|
| +ResourceDispatcherHostImpl::MaybeInterceptAsStream(net::URLRequest* request,
|
| + ResourceResponse* response) {
|
| + ResourceRequestInfoImpl* info = ResourceRequestInfoImpl::ForRequest(request);
|
| + const std::string& mime_type = response->head.mime_type;
|
| +
|
| + GURL security_origin;
|
| + std::string target_id;
|
| + if (!delegate_ ||
|
| + !delegate_->ShouldInterceptResourceAsStream(info->GetContext(),
|
| + request->url(),
|
| + mime_type,
|
| + &security_origin,
|
| + &target_id)) {
|
| + return scoped_ptr<ResourceHandler>();
|
| + }
|
| +
|
| + StreamContext* stream_context =
|
| + GetStreamContextForResourceContext(info->GetContext());
|
| +
|
| +
|
| + scoped_ptr<StreamResourceHandler> handler(
|
| + new StreamResourceHandler(request,
|
| + stream_context->registry(),
|
| + security_origin));
|
| +
|
| + info->set_is_stream(true);
|
| + delegate_->OnStreamCreated(
|
| + info->GetContext(),
|
| + info->GetChildID(),
|
| + info->GetRouteID(),
|
| + target_id,
|
| + handler->stream()->CreateHandle(request->url(), mime_type));
|
| + return (scoped_ptr<ResourceHandler>(handler.release())).Pass();
|
| +}
|
| +
|
| void ResourceDispatcherHostImpl::ClearSSLClientAuthHandlerForRequest(
|
| net::URLRequest* request) {
|
| ResourceRequestInfoImpl* info = ResourceRequestInfoImpl::ForRequest(request);
|
| @@ -951,6 +992,7 @@ void ResourceDispatcherHostImpl::BeginRequest(
|
| request_data.resource_type,
|
| request_data.transition_type,
|
| false, // is download
|
| + false, // is stream
|
| allow_download,
|
| request_data.has_user_gesture,
|
| request_data.referrer_policy,
|
| @@ -1119,6 +1161,7 @@ ResourceRequestInfoImpl* ResourceDispatcherHostImpl::CreateRequestInfo(
|
| ResourceType::SUB_RESOURCE,
|
| PAGE_TRANSITION_LINK,
|
| download, // is_download
|
| + false, // is_stream
|
| download, // allow_download
|
| false, // has_user_gesture
|
| WebKit::WebReferrerPolicyDefault,
|
|
|