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

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

Issue 765843003: Refactor GuestViewContainer::AttachRequest to allow for other request types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Avoid a new static 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.h
diff --git a/extensions/renderer/guest_view/extensions_guest_view_container.h b/extensions/renderer/guest_view/extensions_guest_view_container.h
index 9b1424d54da033ffecb31b49c00b45b3d0465240..0efec2668aa17792f6937dc643fa63d44a807089 100644
--- a/extensions/renderer/guest_view/extensions_guest_view_container.h
+++ b/extensions/renderer/guest_view/extensions_guest_view_container.h
@@ -17,48 +17,58 @@ namespace extensions {
class ExtensionsGuestViewContainer : public GuestViewContainer {
public:
+
+ class Request {
+ public:
+ Request(GuestViewContainer* container,
+ v8::Handle<v8::Function> callback,
+ v8::Isolate* isolate);
+ virtual ~Request();
+
+ virtual void PerformRequest() = 0;
+ virtual void HandleResponse(const IPC::Message& message) = 0;
+
+ GuestViewContainer* container() const { return container_; }
+
+ bool HasCallback() const;
+
+ v8::Handle<v8::Function> GetCallback() const;
+
+ v8::Isolate* isolate() const { return isolate_; }
+
+ private:
+ GuestViewContainer* container_;
+ 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 {
+ class AttachRequest : public Request {
public:
- AttachRequest(int element_instance_id,
+ AttachRequest(GuestViewContainer* container,
int guest_instance_id,
scoped_ptr<base::DictionaryValue> params,
v8::Handle<v8::Function> callback,
v8::Isolate* isolate);
- ~AttachRequest();
-
- int element_instance_id() const { return element_instance_id_; }
+ ~AttachRequest() override;
- int guest_instance_id() const { return guest_instance_id_; }
-
- base::DictionaryValue* attach_params() const {
- return params_.get();
- }
-
- bool HasCallback() const;
-
- v8::Handle<v8::Function> GetCallback() const;
-
- v8::Isolate* isolate() const { return isolate_; }
+ void PerformRequest() override;
+ void HandleResponse(const IPC::Message& message) override;
private:
- const int element_instance_id_;
const int guest_instance_id_;
scoped_ptr<base::DictionaryValue> params_;
- ScopedPersistent<v8::Function> callback_;
- v8::Isolate* const isolate_;
};
explicit ExtensionsGuestViewContainer(content::RenderFrame* render_frame);
~ExtensionsGuestViewContainer() override;
- static ExtensionsGuestViewContainer* FromID(int render_view_routing_id,
- int element_instance_id);
+ static ExtensionsGuestViewContainer* FromID(int element_instance_id);
- void AttachGuest(linked_ptr<AttachRequest> request);
+ void IssueRequest(linked_ptr<Request> request);
// BrowserPluginDelegate implementation.
void SetElementInstanceID(int element_instance_id) override;
@@ -69,18 +79,16 @@ class ExtensionsGuestViewContainer : public GuestViewContainer {
bool OnMessage(const IPC::Message& message) override;
private:
- void OnGuestAttached(int element_instance_id,
- int guest_proxy_routing_id);
+ void OnHandleCallback(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);
+ void EnqueueRequest(linked_ptr<Request> request);
+ void PerformPendingRequest();
+ void HandlePendingResponseCallback(const IPC::Message& message);
bool ready_;
- std::deque<linked_ptr<AttachRequest> > pending_requests_;
- linked_ptr<AttachRequest> pending_response_;
+ std::deque<linked_ptr<Request> > pending_requests_;
+ linked_ptr<Request> pending_response_;
DISALLOW_COPY_AND_ASSIGN(ExtensionsGuestViewContainer);
};

Powered by Google App Engine
This is Rietveld 408576698