Index: extensions/renderer/guest_view/extensions_guest_view_container.h |
diff --git a/extensions/renderer/guest_view/extensions_guest_view_container.h b/extensions/renderer/guest_view/extensions_guest_view_container.h |
index 0efec2668aa17792f6937dc643fa63d44a807089..9b1424d54da033ffecb31b49c00b45b3d0465240 100644 |
--- a/extensions/renderer/guest_view/extensions_guest_view_container.h |
+++ b/extensions/renderer/guest_view/extensions_guest_view_container.h |
@@ -17,18 +17,26 @@ |
class ExtensionsGuestViewContainer : public GuestViewContainer { |
public: |
+ // This class represents an AttachGuest request from Javascript. It includes |
+ // the input parameters and the callback function. The Attach operation may |
+ // not execute immediately, if the container is not ready or if there are |
+ // other attach operations in flight. |
+ class AttachRequest { |
+ public: |
+ AttachRequest(int element_instance_id, |
+ int guest_instance_id, |
+ scoped_ptr<base::DictionaryValue> params, |
+ v8::Handle<v8::Function> callback, |
+ v8::Isolate* isolate); |
+ ~AttachRequest(); |
- class Request { |
- public: |
- Request(GuestViewContainer* container, |
- v8::Handle<v8::Function> callback, |
- v8::Isolate* isolate); |
- virtual ~Request(); |
+ int element_instance_id() const { return element_instance_id_; } |
- virtual void PerformRequest() = 0; |
- virtual void HandleResponse(const IPC::Message& message) = 0; |
+ int guest_instance_id() const { return guest_instance_id_; } |
- GuestViewContainer* container() const { return container_; } |
+ base::DictionaryValue* attach_params() const { |
+ return params_.get(); |
+ } |
bool HasCallback() const; |
@@ -37,38 +45,20 @@ |
v8::Isolate* isolate() const { return isolate_; } |
private: |
- GuestViewContainer* container_; |
+ const int element_instance_id_; |
+ const int guest_instance_id_; |
+ scoped_ptr<base::DictionaryValue> params_; |
ScopedPersistent<v8::Function> callback_; |
v8::Isolate* const isolate_; |
- }; |
- |
- // This class represents an AttachGuest request from Javascript. It includes |
- // the input parameters and the callback function. The Attach operation may |
- // not execute immediately, if the container is not ready or if there are |
- // other attach operations in flight. |
- class AttachRequest : public Request { |
- public: |
- AttachRequest(GuestViewContainer* container, |
- int guest_instance_id, |
- scoped_ptr<base::DictionaryValue> params, |
- v8::Handle<v8::Function> callback, |
- v8::Isolate* isolate); |
- ~AttachRequest() override; |
- |
- void PerformRequest() override; |
- void HandleResponse(const IPC::Message& message) override; |
- |
- private: |
- const int guest_instance_id_; |
- scoped_ptr<base::DictionaryValue> params_; |
}; |
explicit ExtensionsGuestViewContainer(content::RenderFrame* render_frame); |
~ExtensionsGuestViewContainer() override; |
- static ExtensionsGuestViewContainer* FromID(int element_instance_id); |
+ static ExtensionsGuestViewContainer* FromID(int render_view_routing_id, |
+ int element_instance_id); |
- void IssueRequest(linked_ptr<Request> request); |
+ void AttachGuest(linked_ptr<AttachRequest> request); |
// BrowserPluginDelegate implementation. |
void SetElementInstanceID(int element_instance_id) override; |
@@ -79,16 +69,18 @@ |
bool OnMessage(const IPC::Message& message) override; |
private: |
- void OnHandleCallback(const IPC::Message& message); |
+ void OnGuestAttached(int element_instance_id, |
+ int guest_proxy_routing_id); |
- void EnqueueRequest(linked_ptr<Request> request); |
- void PerformPendingRequest(); |
- void HandlePendingResponseCallback(const IPC::Message& message); |
+ void AttachGuestInternal(linked_ptr<AttachRequest> request); |
+ void EnqueueAttachRequest(linked_ptr<AttachRequest> request); |
+ void PerformPendingAttachRequest(); |
+ void HandlePendingResponseCallback(int guest_proxy_routing_id); |
bool ready_; |
- std::deque<linked_ptr<Request> > pending_requests_; |
- linked_ptr<Request> pending_response_; |
+ std::deque<linked_ptr<AttachRequest> > pending_requests_; |
+ linked_ptr<AttachRequest> pending_response_; |
DISALLOW_COPY_AND_ASSIGN(ExtensionsGuestViewContainer); |
}; |