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

Side by Side Diff: chrome/browser/extensions/api/streams_private/streams_private_api.cc

Issue 2331343005: PlzNavigate: Get StreamPrivate API to work. (Closed)
Patch Set: Update chrome_resource_dispatcher_host_delegate.cc Created 4 years, 2 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
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 #include "chrome/browser/extensions/api/streams_private/streams_private_api.h" 5 #include "chrome/browser/extensions/api/streams_private/streams_private_api.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "chrome/browser/extensions/extension_tab_util.h" 12 #include "chrome/browser/extensions/extension_tab_util.h"
13 #include "chrome/common/extensions/api/streams_private.h" 13 #include "chrome/common/extensions/api/streams_private.h"
14 #include "content/public/browser/render_frame_host.h"
14 #include "content/public/browser/stream_handle.h" 15 #include "content/public/browser/stream_handle.h"
15 #include "content/public/browser/stream_info.h" 16 #include "content/public/browser/stream_info.h"
17 #include "content/public/browser/web_contents.h"
16 #include "extensions/browser/event_router.h" 18 #include "extensions/browser/event_router.h"
17 #include "extensions/browser/extension_function_registry.h" 19 #include "extensions/browser/extension_function_registry.h"
18 #include "extensions/browser/extension_registry.h" 20 #include "extensions/browser/extension_registry.h"
19 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_stream_ma nager.h" 21 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_stream_ma nager.h"
20 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_gues t.h" 22 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_gues t.h"
21 #include "extensions/common/manifest_handlers/mime_types_handler.h" 23 #include "extensions/common/manifest_handlers/mime_types_handler.h"
22 #include "net/http/http_response_headers.h" 24 #include "net/http/http_response_headers.h"
23 25
24 namespace extensions { 26 namespace extensions {
25 namespace { 27 namespace {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 extension_registry_observer_(this), 60 extension_registry_observer_(this),
59 weak_ptr_factory_(this) { 61 weak_ptr_factory_(this) {
60 extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_)); 62 extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
61 } 63 }
62 64
63 StreamsPrivateAPI::~StreamsPrivateAPI() { 65 StreamsPrivateAPI::~StreamsPrivateAPI() {
64 } 66 }
65 67
66 void StreamsPrivateAPI::ExecuteMimeTypeHandler( 68 void StreamsPrivateAPI::ExecuteMimeTypeHandler(
67 const std::string& extension_id, 69 const std::string& extension_id,
68 content::WebContents* web_contents,
nasko 2016/09/21 21:32:18 Why can't we pass this through to the MimeHandlerS
ananta 2016/09/21 21:59:12 Please refer to jam's comment a couple patchsets b
nasko 2016/09/21 22:08:55 I completely agree with avoiding the redundancy. W
69 std::unique_ptr<content::StreamInfo> stream, 70 std::unique_ptr<content::StreamInfo> stream,
70 const std::string& view_id, 71 const std::string& view_id,
71 int64_t expected_content_size, 72 int64_t expected_content_size,
72 bool embedded, 73 bool embedded,
74 int frame_tree_node_id,
73 int render_process_id, 75 int render_process_id,
74 int render_frame_id) { 76 int render_frame_id) {
75 const Extension* extension = ExtensionRegistry::Get(browser_context_) 77 const Extension* extension = ExtensionRegistry::Get(browser_context_)
76 ->enabled_extensions() 78 ->enabled_extensions()
77 .GetByID(extension_id); 79 .GetByID(extension_id);
78 if (!extension) 80 if (!extension)
79 return; 81 return;
80 82
83 content::WebContents* web_contents = nullptr;
84 if (frame_tree_node_id != -1) {
85 web_contents =
86 content::WebContents::FromFrameTreeNodeId(frame_tree_node_id);
87 } else {
88 web_contents = content::WebContents::FromRenderFrameHost(
89 content::RenderFrameHost::FromID(render_process_id, render_frame_id));
90 }
91 if (!web_contents)
92 return;
93
81 MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension); 94 MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension);
82 // If the mime handler uses MimeHandlerViewGuest, the MimeHandlerViewGuest 95 // If the mime handler uses MimeHandlerViewGuest, the MimeHandlerViewGuest
83 // will take ownership of the stream. Otherwise, store the stream handle in 96 // will take ownership of the stream. Otherwise, store the stream handle in
84 // |streams_| and fire an event notifying the extension. 97 // |streams_| and fire an event notifying the extension.
85 if (handler->HasPlugin()) { 98 if (handler->HasPlugin()) {
86 GURL handler_url(Extension::GetBaseURLFromExtensionId(extension_id).spec() + 99 GURL handler_url(Extension::GetBaseURLFromExtensionId(extension_id).spec() +
87 handler->handler_url()); 100 handler->handler_url());
88 int tab_id = ExtensionTabUtil::GetTabId(web_contents); 101 int tab_id = ExtensionTabUtil::GetTabId(web_contents);
89 std::unique_ptr<StreamContainer> stream_container(new StreamContainer( 102 std::unique_ptr<StreamContainer> stream_container(new StreamContainer(
90 std::move(stream), tab_id, embedded, handler_url, extension_id)); 103 std::move(stream), tab_id, embedded, handler_url, extension_id));
91 MimeHandlerStreamManager::Get(browser_context_) 104 MimeHandlerStreamManager::Get(browser_context_)
92 ->AddStream(view_id, std::move(stream_container), render_process_id, 105 ->AddStream(view_id, std::move(stream_container), frame_tree_node_id,
93 render_frame_id); 106 render_process_id, render_frame_id);
94 return; 107 return;
95 } 108 }
96 // Create the event's arguments value. 109 // Create the event's arguments value.
97 streams_private::StreamInfo info; 110 streams_private::StreamInfo info;
98 info.mime_type = stream->mime_type; 111 info.mime_type = stream->mime_type;
99 info.original_url = stream->original_url.spec(); 112 info.original_url = stream->original_url.spec();
100 info.stream_url = stream->handle->GetURL().spec(); 113 info.stream_url = stream->handle->GetURL().spec();
101 info.tab_id = ExtensionTabUtil::GetTabId(web_contents); 114 info.tab_id = ExtensionTabUtil::GetTabId(web_contents);
102 info.embedded = embedded; 115 info.embedded = embedded;
103 116
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 static base::LazyInstance<BrowserContextKeyedAPIFactory<StreamsPrivateAPI> > 185 static base::LazyInstance<BrowserContextKeyedAPIFactory<StreamsPrivateAPI> >
173 g_factory = LAZY_INSTANCE_INITIALIZER; 186 g_factory = LAZY_INSTANCE_INITIALIZER;
174 187
175 // static 188 // static
176 BrowserContextKeyedAPIFactory<StreamsPrivateAPI>* 189 BrowserContextKeyedAPIFactory<StreamsPrivateAPI>*
177 StreamsPrivateAPI::GetFactoryInstance() { 190 StreamsPrivateAPI::GetFactoryInstance() {
178 return g_factory.Pointer(); 191 return g_factory.Pointer();
179 } 192 }
180 193
181 } // namespace extensions 194 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698