Chromium Code Reviews| Index: chrome/browser/extensions/api/streams_private/streams_private_api.cc |
| diff --git a/chrome/browser/extensions/api/streams_private/streams_private_api.cc b/chrome/browser/extensions/api/streams_private/streams_private_api.cc |
| index 21853e77ea32fd025618928357b97f7e9b10da87..f505c1d9abb09cbe104442f911ab5c3ebf31be50 100644 |
| --- a/chrome/browser/extensions/api/streams_private/streams_private_api.cc |
| +++ b/chrome/browser/extensions/api/streams_private/streams_private_api.cc |
| @@ -14,7 +14,6 @@ |
| #include "extensions/browser/event_router.h" |
| #include "extensions/browser/extension_function_registry.h" |
| #include "extensions/browser/extension_registry.h" |
| -#include "extensions/browser/guest_view/guest_view_manager.h" |
| #include "extensions/browser/guest_view/mime_handler_view/mime_handler_stream_manager.h" |
| #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h" |
| #include "net/http/http_response_headers.h" |
| @@ -42,21 +41,6 @@ void CreateResponseHeadersDictionary(const net::HttpResponseHeaders* headers, |
| } |
| } |
| -// If |guest_web_contents| has a MimeHandlerViewGuest with view id of |view_id|, |
| -// abort it. Returns true if the MimeHandlerViewGuest has a matching view id. |
| -bool MaybeAbortStreamInGuest(const std::string& view_id, |
| - content::WebContents* guest_web_contents) { |
| - auto guest = MimeHandlerViewGuest::FromWebContents(guest_web_contents); |
| - if (!guest) |
| - return false; |
| - if (guest->view_id() != view_id) |
| - return false; |
| - auto stream = guest->GetStream(); |
| - if (stream) |
| - stream->Abort(); |
| - return true; |
| -} |
| - |
| } // namespace |
| namespace streams_private = api::streams_private; |
| @@ -91,6 +75,22 @@ void StreamsPrivateAPI::ExecuteMimeTypeHandler( |
| if (!extension) |
| return; |
| + MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension); |
| + // If the mime handler uses MimeHandlerViewGuest, the MimeHandlerViewGuest |
| + // will take ownership of the stream. Otherwise, store the stream handle in |
| + // |streams_| and fire an event notifying the extension. |
| + if (!handler->handler_url().empty()) { |
| + GURL handler_url(Extension::GetBaseURLFromExtensionId(extension_id).spec() + |
| + handler->handler_url()); |
| + MimeHandlerStreamManager::Get(browser_context_) |
| + ->AddStream( |
| + view_id, |
| + make_scoped_ptr(new StreamContainer( |
| + stream.Pass(), ExtensionTabUtil::GetTabId(web_contents), |
| + expected_content_size, embedded, handler_url, extension_id)), |
| + render_process_id, render_frame_id); |
|
raymes
2015/01/12 05:26:04
Can we split this up into a few statements?? :)
Sam McNally
2015/01/12 07:13:35
Done.
|
| + return; |
| + } |
| // Create the event's arguments value. |
| streams_private::StreamInfo info; |
| info.mime_type = stream->mime_type; |
| @@ -117,54 +117,12 @@ void StreamsPrivateAPI::ExecuteMimeTypeHandler( |
| EventRouter::Get(browser_context_) |
| ->DispatchEventToExtension(extension_id, event.Pass()); |
| - MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension); |
| - GURL url = stream->handle->GetURL(); |
| - // If the mime handler uses MimeHandlerViewGuest, the MimeHandlerViewGuest |
| - // will take ownership of the stream. Otherwise, store the stream handle in |
| - // |streams_|. |
| - if (handler->handler_url().empty()) { |
| - streams_[extension_id][url] = make_linked_ptr(stream->handle.release()); |
|
raymes
2015/01/12 05:26:04
I think we might need this.
Sam McNally
2015/01/12 07:13:35
Done.
|
| - return; |
| - } |
| - GURL handler_url(Extension::GetBaseURLFromExtensionId(extension_id).spec() + |
| - handler->handler_url() + "?id=" + view_id); |
| - MimeHandlerStreamManager::Get(browser_context_) |
| - ->AddStream(view_id, make_scoped_ptr(new StreamContainer( |
| - stream.Pass(), handler_url, extension_id)), |
| - render_process_id, render_frame_id); |
| - // If the mime handler uses MimeHandlerViewGuest, we need to be able to look |
| - // up the MimeHandlerViewGuest instance that is handling the streamed |
| - // resource in order to abort the stream. The embedding WebContents and the |
| - // view id are necessary to perform that lookup. |
| - mime_handler_streams_[extension_id][url] = |
| - std::make_pair(web_contents, view_id); |
| } |
| void StreamsPrivateAPI::AbortStream(const std::string& extension_id, |
| const GURL& stream_url, |
| const base::Closure& callback) { |
| - auto streams = mime_handler_streams_.find(extension_id); |
| - if (streams != mime_handler_streams_.end()) { |
| - auto stream_info = streams->second.find(stream_url); |
| - if (stream_info != streams->second.end()) { |
| - auto stream = MimeHandlerStreamManager::Get(browser_context_) |
| - ->GetStream(stream_info->second.second); |
| - // If the mime handler uses MimeHandlerViewGuest, the stream will either |
| - // be owned by the particular MimeHandlerViewGuest if it has been created, |
| - // or by the MimeHandleStreamManager, otherwise. |
| - if (!stream) { |
| - GuestViewManager::FromBrowserContext(browser_context_) |
| - ->ForEachGuest(stream_info->second.first, |
| - base::Bind(&MaybeAbortStreamInGuest, |
| - stream_info->second.second)); |
| - } |
| - streams->second.erase(stream_info); |
| - callback.Run(); |
| - } |
| - return; |
| - } |
| - |
| StreamMap::iterator extension_it = streams_.find(extension_id); |
| if (extension_it == streams_.end()) { |
| callback.Run(); |
| @@ -187,7 +145,6 @@ void StreamsPrivateAPI::OnExtensionUnloaded( |
| const Extension* extension, |
| UnloadedExtensionInfo::Reason reason) { |
| streams_.erase(extension->id()); |
| - mime_handler_streams_.erase(extension->id()); |
| } |
| StreamsPrivateAbortFunction::StreamsPrivateAbortFunction() { |