| 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);
|
| };
|
|
|