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

Unified Diff: extensions/renderer/guest_view/extensions_guest_view_container.cc

Issue 702433002: Refactor GuestViewContainer to split out WebView related logic and MimeHandlerView related logic. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: extensions/renderer/guest_view/extensions_guest_view_container.cc
diff --git a/extensions/renderer/guest_view/guest_view_container.cc b/extensions/renderer/guest_view/extensions_guest_view_container.cc
similarity index 50%
copy from extensions/renderer/guest_view/guest_view_container.cc
copy to extensions/renderer/guest_view/extensions_guest_view_container.cc
index 781027063a16d8079aa3dc2de2d08a7222e5c59d..3790d56f39d8636c0ee239f98c073134a047c4d0 100644
--- a/extensions/renderer/guest_view/guest_view_container.cc
+++ b/extensions/renderer/guest_view/extensions_guest_view_container.cc
@@ -2,9 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "extensions/renderer/guest_view/guest_view_container.h"
+#include "extensions/renderer/guest_view/extensions_guest_view_container.h"
-#include "content/public/renderer/browser_plugin_delegate.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_view.h"
#include "extensions/common/extension_messages.h"
@@ -15,15 +14,15 @@
namespace {
typedef std::pair<int, int> GuestViewID;
-typedef std::map<GuestViewID, extensions::GuestViewContainer*>
- GuestViewContainerMap;
-static base::LazyInstance<GuestViewContainerMap> g_guest_view_container_map =
- LAZY_INSTANCE_INITIALIZER;
+typedef std::map<GuestViewID, extensions::ExtensionsGuestViewContainer*>
+ ExtensionsGuestViewContainerMap;
+static base::LazyInstance<ExtensionsGuestViewContainerMap>
+ g_guest_view_container_map = LAZY_INSTANCE_INITIALIZER;
} // namespace
namespace extensions {
-GuestViewContainer::AttachRequest::AttachRequest(
+ExtensionsGuestViewContainer::AttachRequest::AttachRequest(
int element_instance_id,
int guest_instance_id,
scoped_ptr<base::DictionaryValue> params,
@@ -36,136 +35,90 @@ GuestViewContainer::AttachRequest::AttachRequest(
isolate_(isolate) {
}
-GuestViewContainer::AttachRequest::~AttachRequest() {
+ExtensionsGuestViewContainer::AttachRequest::~AttachRequest() {
}
-bool GuestViewContainer::AttachRequest::HasCallback() const {
+bool ExtensionsGuestViewContainer::AttachRequest::HasCallback() const {
return !callback_.IsEmpty();
}
v8::Handle<v8::Function>
-GuestViewContainer::AttachRequest::GetCallback() const {
+ExtensionsGuestViewContainer::AttachRequest::GetCallback() const {
return callback_.NewHandle(isolate_);
}
-GuestViewContainer::GuestViewContainer(
- content::RenderFrame* render_frame,
- const std::string& mime_type)
- : content::BrowserPluginDelegate(render_frame, mime_type),
- content::RenderFrameObserver(render_frame),
- mime_type_(mime_type),
- element_instance_id_(guestview::kInstanceIDNone),
- render_view_routing_id_(render_frame->GetRenderView()->GetRoutingID()),
- attached_(false),
+ExtensionsGuestViewContainer::ExtensionsGuestViewContainer(
+ content::RenderFrame* render_frame)
+ : GuestViewContainer(render_frame),
ready_(false) {
}
-GuestViewContainer::~GuestViewContainer() {
- if (element_instance_id_ != guestview::kInstanceIDNone) {
+ExtensionsGuestViewContainer::~ExtensionsGuestViewContainer() {
+ if (element_instance_id() != guestview::kInstanceIDNone) {
g_guest_view_container_map.Get().erase(
- GuestViewID(render_view_routing_id_, element_instance_id_));
+ GuestViewID(render_view_routing_id(), element_instance_id()));
}
}
-GuestViewContainer* GuestViewContainer::FromID(int render_view_routing_id,
- int element_instance_id) {
- GuestViewContainerMap* guest_view_containers =
+ExtensionsGuestViewContainer* ExtensionsGuestViewContainer::FromID(
+ int render_view_routing_id,
+ int element_instance_id) {
+ ExtensionsGuestViewContainerMap* guest_view_containers =
g_guest_view_container_map.Pointer();
- GuestViewContainerMap::iterator it = guest_view_containers->find(
+ ExtensionsGuestViewContainerMap::iterator it = guest_view_containers->find(
GuestViewID(render_view_routing_id, element_instance_id));
return it == guest_view_containers->end() ? NULL : it->second;
}
-void GuestViewContainer::AttachGuest(linked_ptr<AttachRequest> request) {
+void ExtensionsGuestViewContainer::AttachGuest(
+ linked_ptr<AttachRequest> request) {
EnqueueAttachRequest(request);
PerformPendingAttachRequest();
}
-void GuestViewContainer::SetElementInstanceID(int element_instance_id) {
- GuestViewID guest_view_id(render_view_routing_id_, element_instance_id);
- DCHECK_EQ(element_instance_id_, guestview::kInstanceIDNone);
+void ExtensionsGuestViewContainer::SetElementInstanceID(
+ int element_instance_id) {
+ GuestViewContainer::SetElementInstanceID(element_instance_id);
+
+ GuestViewID guest_view_id(render_view_routing_id(), element_instance_id);
DCHECK(g_guest_view_container_map.Get().find(guest_view_id) ==
g_guest_view_container_map.Get().end());
- element_instance_id_ = element_instance_id;
g_guest_view_container_map.Get().insert(std::make_pair(guest_view_id, this));
}
-void GuestViewContainer::DidFinishLoading() {
- if (mime_type_.empty())
- return;
-
- DCHECK_NE(element_instance_id_, guestview::kInstanceIDNone);
- render_frame()->Send(new ExtensionHostMsg_CreateMimeHandlerViewGuest(
- routing_id(), html_string_, mime_type_, element_instance_id_));
-}
-
-void GuestViewContainer::DidReceiveData(const char* data, int data_length) {
- std::string value(data, data_length);
- html_string_ += value;
-}
-
-void GuestViewContainer::Ready() {
+void ExtensionsGuestViewContainer::Ready() {
ready_ = true;
CHECK(!pending_response_.get());
PerformPendingAttachRequest();
}
-void GuestViewContainer::OnDestruct() {
- // GuestViewContainer's lifetime is managed by BrowserPlugin so don't let
- // RenderFrameObserver self-destruct here.
+bool ExtensionsGuestViewContainer::HandlesMessage(const IPC::Message& message) {
+ return message.type() == ExtensionMsg_GuestAttached::ID;
}
-bool GuestViewContainer::OnMessageReceived(const IPC::Message& message) {
- if (!ShouldHandleMessage(message))
- return false;
-
- DCHECK_NE(element_instance_id_, guestview::kInstanceIDNone);
- int element_instance_id = guestview::kInstanceIDNone;
- PickleIterator iter(message);
- bool success = iter.ReadInt(&element_instance_id);
- DCHECK(success);
- if (element_instance_id != element_instance_id_)
- return false;
-
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(GuestViewContainer, message)
- IPC_MESSAGE_HANDLER(ExtensionMsg_CreateMimeHandlerViewGuestACK,
- OnCreateMimeHandlerViewGuestACK)
+bool ExtensionsGuestViewContainer::OnMessage(const IPC::Message& message) {
+ bool handled = false;
+ IPC_BEGIN_MESSAGE_MAP(ExtensionsGuestViewContainer, message)
IPC_MESSAGE_HANDLER(ExtensionMsg_GuestAttached, OnGuestAttached)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
}
-void GuestViewContainer::OnCreateMimeHandlerViewGuestACK(
- int element_instance_id) {
- DCHECK_NE(element_instance_id_, guestview::kInstanceIDNone);
- DCHECK_EQ(element_instance_id_, element_instance_id);
- DCHECK(!mime_type_.empty());
- render_frame()->AttachGuest(element_instance_id);
-}
-
-void GuestViewContainer::OnGuestAttached(int element_instance_id,
- int guest_proxy_routing_id) {
- attached_ = true;
-
- if (!mime_type_.empty()) {
- // MimeHandlerView's creation and attachment is not done via JS API.
- return;
- }
-
+void ExtensionsGuestViewContainer::OnGuestAttached(int /* unused */,
+ int guest_proxy_routing_id) {
// Handle the callback for the current request with a pending response.
HandlePendingResponseCallback(guest_proxy_routing_id);
// Perform the subsequent attach request if one exists.
PerformPendingAttachRequest();
}
-void GuestViewContainer::AttachGuestInternal(
+void ExtensionsGuestViewContainer::AttachGuestInternal(
linked_ptr<AttachRequest> request) {
CHECK(!pending_response_.get());
// Step 1, send the attach params to chrome/.
render_frame()->Send(
- new ExtensionHostMsg_AttachGuest(render_view_routing_id_,
+ new ExtensionHostMsg_AttachGuest(render_view_routing_id(),
request->element_instance_id(),
request->guest_instance_id(),
*request->attach_params()));
@@ -176,12 +129,12 @@ void GuestViewContainer::AttachGuestInternal(
pending_response_ = request;
}
-void GuestViewContainer::EnqueueAttachRequest(
+void ExtensionsGuestViewContainer::EnqueueAttachRequest(
linked_ptr<AttachRequest> request) {
pending_requests_.push_back(request);
}
-void GuestViewContainer::PerformPendingAttachRequest() {
+void ExtensionsGuestViewContainer::PerformPendingAttachRequest() {
if (!ready_ || pending_requests_.empty() || pending_response_.get())
return;
@@ -190,7 +143,7 @@ void GuestViewContainer::PerformPendingAttachRequest() {
AttachGuestInternal(pending_request);
}
-void GuestViewContainer::HandlePendingResponseCallback(
+void ExtensionsGuestViewContainer::HandlePendingResponseCallback(
int guest_proxy_routing_id) {
CHECK(pending_response_.get());
linked_ptr<AttachRequest> pending_response(pending_response_.release());
@@ -225,16 +178,4 @@ void GuestViewContainer::HandlePendingResponseCallback(
callback->Call(context->Global(), argc, argv);
}
-// static
-bool GuestViewContainer::ShouldHandleMessage(const IPC::Message& message) {
- switch (message.type()) {
- case ExtensionMsg_CreateMimeHandlerViewGuestACK::ID:
- case ExtensionMsg_GuestAttached::ID:
- return true;
- default:
- break;
- }
- return false;
-}
-
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698