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

Unified Diff: components/guest_view/renderer/guest_view_container.h

Issue 972313002: Make <webview> use out-of-process iframe architecture. (Closed) Base URL: ssh://saopaulo.wat/mnt/dev/shared/src@testoopif2z-better-chrome
Patch Set: Address comments move destruction callback to GuestViewContainer Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: components/guest_view/renderer/guest_view_container.h
diff --git a/components/guest_view/renderer/guest_view_container.h b/components/guest_view/renderer/guest_view_container.h
index 61c95fa17e49f6f0a647fe147af0aa88e1856360..25ae41a03db6040cb3b23d7b7d1a25b577885fd9 100644
--- a/components/guest_view/renderer/guest_view_container.h
+++ b/components/guest_view/renderer/guest_view_container.h
@@ -9,6 +9,7 @@
#include "base/memory/scoped_ptr.h"
#include "content/public/renderer/browser_plugin_delegate.h"
#include "ipc/ipc_message.h"
+#include "v8/include/v8.h"
namespace guest_view {
@@ -37,6 +38,9 @@ class GuestViewContainer : public content::BrowserPluginDelegate {
// embedding frame of the container being destroyed.
void Destroy(bool embedder_frame_destroyed);
+ void RegisterDestructionCallback(v8::Local<v8::Function> callback,
+ v8::Isolate* isolate);
+
// Called when the embedding RenderFrame is destroyed.
virtual void OnRenderFrameDestroyed() {}
@@ -52,9 +56,16 @@ class GuestViewContainer : public content::BrowserPluginDelegate {
// Note that this should be called exactly once.
virtual void OnDestroy(bool embedder_frame_destroyed) {}
+ // BrowserPluginGuestDelegate public implementation.
+ void SetElementInstanceID(int element_instance_id) final;
+
protected:
~GuestViewContainer() override;
+ bool ready_;
+
+ void OnHandleCallback(const IPC::Message& message);
+
private:
class RenderFrameLifetimeObserver;
friend class RenderFrameLifetimeObserver;
@@ -64,12 +75,10 @@ class GuestViewContainer : public content::BrowserPluginDelegate {
void EnqueueRequest(linked_ptr<GuestViewRequest> request);
void PerformPendingRequest();
void HandlePendingResponseCallback(const IPC::Message& message);
-
- void OnHandleCallback(const IPC::Message& message);
+ void RunDestructionCallback(bool embedder_frame_destroyed);
// BrowserPluginDelegate implementation.
void Ready() final;
- void SetElementInstanceID(int element_instance_id) final;
void DidDestroyElement() final;
base::WeakPtr<BrowserPluginDelegate> GetWeakPtr() final;
@@ -77,12 +86,14 @@ class GuestViewContainer : public content::BrowserPluginDelegate {
content::RenderFrame* render_frame_;
scoped_ptr<RenderFrameLifetimeObserver> render_frame_lifetime_observer_;
- bool ready_;
bool in_destruction_;
std::deque<linked_ptr<GuestViewRequest> > pending_requests_;
linked_ptr<GuestViewRequest> pending_response_;
+ v8::Global<v8::Function> destruction_callback_;
+ v8::Isolate* destruction_isolate_;
+
base::WeakPtrFactory<GuestViewContainer> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(GuestViewContainer);

Powered by Google App Engine
This is Rietveld 408576698