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

Side by Side Diff: extensions/renderer/guest_view/mime_handler_view/mime_handler_view_container.cc

Issue 2287213002: Ensure loading PDFs doesn't generate 2 http requests (Closed)
Patch Set: Ensure loading PDFs doesn't generate 2 http requests Created 4 years, 3 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 | « extensions/browser/guest_view/mime_handler_view/mime_handler_view_browsertest.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 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 "extensions/renderer/guest_view/mime_handler_view/mime_handler_view_con tainer.h" 5 #include "extensions/renderer/guest_view/mime_handler_view/mime_handler_view_con tainer.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 original_url_(original_url), 110 original_url_(original_url),
111 guest_proxy_routing_id_(-1), 111 guest_proxy_routing_id_(-1),
112 guest_loaded_(false), 112 guest_loaded_(false),
113 weak_factory_(this) { 113 weak_factory_(this) {
114 DCHECK(!mime_type_.empty()); 114 DCHECK(!mime_type_.empty());
115 is_embedded_ = !render_frame->GetWebFrame()->document().isPluginDocument(); 115 is_embedded_ = !render_frame->GetWebFrame()->document().isPluginDocument();
116 g_mime_handler_view_container_map.Get()[render_frame].insert(this); 116 g_mime_handler_view_container_map.Get()[render_frame].insert(this);
117 } 117 }
118 118
119 MimeHandlerViewContainer::~MimeHandlerViewContainer() { 119 MimeHandlerViewContainer::~MimeHandlerViewContainer() {
120 if (loader_) 120 if (loader_) {
121 DCHECK(is_embedded_);
121 loader_->cancel(); 122 loader_->cancel();
123 }
122 124
123 if (render_frame()) { 125 if (render_frame()) {
124 g_mime_handler_view_container_map.Get()[render_frame()].erase(this); 126 g_mime_handler_view_container_map.Get()[render_frame()].erase(this);
125 if (g_mime_handler_view_container_map.Get()[render_frame()].empty()) 127 if (g_mime_handler_view_container_map.Get()[render_frame()].empty())
126 g_mime_handler_view_container_map.Get().erase(render_frame()); 128 g_mime_handler_view_container_map.Get().erase(render_frame());
127 } 129 }
128 } 130 }
129 131
130 // static 132 // static
131 std::vector<MimeHandlerViewContainer*> 133 std::vector<MimeHandlerViewContainer*>
132 MimeHandlerViewContainer::FromRenderFrame(content::RenderFrame* render_frame) { 134 MimeHandlerViewContainer::FromRenderFrame(content::RenderFrame* render_frame) {
133 auto it = g_mime_handler_view_container_map.Get().find(render_frame); 135 auto it = g_mime_handler_view_container_map.Get().find(render_frame);
134 if (it == g_mime_handler_view_container_map.Get().end()) 136 if (it == g_mime_handler_view_container_map.Get().end())
135 return std::vector<MimeHandlerViewContainer*>(); 137 return std::vector<MimeHandlerViewContainer*>();
136 138
137 return std::vector<MimeHandlerViewContainer*>(it->second.begin(), 139 return std::vector<MimeHandlerViewContainer*>(it->second.begin(),
138 it->second.end()); 140 it->second.end());
139 } 141 }
140 142
141 void MimeHandlerViewContainer::OnReady() { 143 void MimeHandlerViewContainer::OnReady() {
142 if (!render_frame()) 144 if (!render_frame() || !is_embedded_)
143 return; 145 return;
144 146
145 blink::WebFrame* frame = render_frame()->GetWebFrame(); 147 blink::WebFrame* frame = render_frame()->GetWebFrame();
146 blink::WebURLLoaderOptions options; 148 blink::WebURLLoaderOptions options;
147 // The embedded plugin is allowed to be cross-origin and we should always 149 // The embedded plugin is allowed to be cross-origin and we should always
148 // send credentials/cookies with the request. 150 // send credentials/cookies with the request.
149 options.crossOriginRequestPolicy = 151 options.crossOriginRequestPolicy =
150 blink::WebURLLoaderOptions::CrossOriginRequestPolicyAllow; 152 blink::WebURLLoaderOptions::CrossOriginRequestPolicyAllow;
151 options.allowCredentials = true; 153 options.allowCredentials = true;
152 DCHECK(!loader_); 154 DCHECK(!loader_);
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 v8::HandleScope handle_scope(isolate); 320 v8::HandleScope handle_scope(isolate);
319 v8::Context::Scope context_scope(frame->mainWorldScriptContext()); 321 v8::Context::Scope context_scope(frame->mainWorldScriptContext());
320 for (const auto& pending_message : pending_messages_) 322 for (const auto& pending_message : pending_messages_)
321 PostMessage(isolate, v8::Local<v8::Value>::New(isolate, *pending_message)); 323 PostMessage(isolate, v8::Local<v8::Value>::New(isolate, *pending_message));
322 324
323 pending_messages_.clear(); 325 pending_messages_.clear();
324 } 326 }
325 327
326 void MimeHandlerViewContainer::CreateMimeHandlerViewGuest() { 328 void MimeHandlerViewContainer::CreateMimeHandlerViewGuest() {
327 // The loader has completed loading |view_id_| so we can dispose it. 329 // The loader has completed loading |view_id_| so we can dispose it.
328 loader_.reset(); 330 if (loader_) {
331 DCHECK(is_embedded_);
332 loader_.reset();
333 }
329 334
330 DCHECK_NE(element_instance_id(), guest_view::kInstanceIDNone); 335 DCHECK_NE(element_instance_id(), guest_view::kInstanceIDNone);
331 336
332 if (!render_frame()) 337 if (!render_frame())
333 return; 338 return;
334 339
335 render_frame()->Send( 340 render_frame()->Send(
336 new ExtensionsGuestViewHostMsg_CreateMimeHandlerViewGuest( 341 new ExtensionsGuestViewHostMsg_CreateMimeHandlerViewGuest(
337 render_frame()->GetRoutingID(), view_id_, element_instance_id(), 342 render_frame()->GetRoutingID(), view_id_, element_instance_id(),
338 element_size_)); 343 element_size_));
339 } 344 }
340 345
341 } // namespace extensions 346 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/guest_view/mime_handler_view/mime_handler_view_browsertest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698