diff options
Diffstat (limited to 'chromium/content/renderer/dom_automation_controller.h')
-rw-r--r-- | chromium/content/renderer/dom_automation_controller.h | 80 |
1 files changed, 39 insertions, 41 deletions
diff --git a/chromium/content/renderer/dom_automation_controller.h b/chromium/content/renderer/dom_automation_controller.h index 0f6a74a30cb..92dc54e5f6f 100644 --- a/chromium/content/renderer/dom_automation_controller.h +++ b/chromium/content/renderer/dom_automation_controller.h @@ -5,8 +5,9 @@ #ifndef CONTENT_RENDERER_DOM_AUTOMATION_CONTROLLER_H_ #define CONTENT_RENDERER_DOM_AUTOMATION_CONTROLLER_H_ -#include "ipc/ipc_sender.h" -#include "webkit/renderer/cpp_bound_class.h" +#include "base/basictypes.h" +#include "content/public/renderer/render_frame_observer.h" +#include "gin/wrappable.h" /* DomAutomationController class: Bound to Javascript window.domAutomationController object. @@ -50,7 +51,7 @@ (0) Initialization step where DAController is bound to the renderer and the view_id of the renderer is supplied to the DAController for - routing message in (5). (routing_id_) + routing message in (5). (1) A 'javascript:' url is sent from the test process to master as an IPC message. A unique routing id is generated at this stage (automation_id_) (2) The automation_id_ of step (1) is supplied to DAController by calling @@ -61,8 +62,8 @@ (4) A callback is generated as a result of domAutomationController.send() into Cpp. The supplied value is received as a result of this callback. (5) The value received in (4) is sent to the master along with the - stored automation_id_ as an IPC message. routing_id_ is used to route - the message. (IPC messages, ViewHostMsg_*DomAutomation* ) + stored automation_id_ as an IPC message. The frame_'s RenderFrameImpl is + used to route the message. (IPC messages, ViewHostMsg_*DomAutomation* ) (6) The value and the automation_id_ is extracted out of the message received in (5). This value is relayed to AProxy using another IPC message. automation_id_ is used to route the message. @@ -70,57 +71,54 @@ */ +namespace blink { +class WebFrame; +} + +namespace gin { +class Arguments; +} + namespace content { -// TODO(vibhor): Add another method-pair like sendLater() and sendNow() -// sendLater() should keep building a json serializer -// sendNow() should send the above serializer as a string. -class DomAutomationController : public webkit_glue::CppBoundClass { +class RenderFrame; + +class DomAutomationController : public gin::Wrappable<DomAutomationController>, + public RenderFrameObserver { public: - DomAutomationController(); + static gin::WrapperInfo kWrapperInfo; + + static void Install(RenderFrame* render_frame, blink::WebFrame* frame); // Makes the renderer send a javascript value to the app. - // The value to be sent can be either of type NPString, - // Number (double casted to int32) or boolean. - // The function returns true/false based on the result of actual send over - // IPC. It sets the return value to null on unexpected errors or arguments. - void Send(const webkit_glue::CppArgumentList& args, - webkit_glue::CppVariant* result); + // The value to be sent can be either of type String, + // Number (double casted to int32) or Boolean. Any other type or no + // argument at all is ignored. + bool SendMsg(const gin::Arguments& args); // Makes the renderer send a javascript value to the app. - // The value must be a NPString and should be properly formed JSON. - // This function does not modify/escape the returned string in any way. - void SendJSON(const webkit_glue::CppArgumentList& args, - webkit_glue::CppVariant* result); + // The value should be properly formed JSON. + bool SendJSON(const std::string& json); // Sends a string with a provided Automation Id. - // Expects two javascript values; the first must be a number type and will be - // used as the Automation Id, the second must be of type NPString. - // The function returns true/false to the javascript based on the success - // of the send over IPC. It sets the javascript return value to null on - // unexpected errors or arguments. - void SendWithId(const webkit_glue::CppArgumentList& args, - webkit_glue::CppVariant* result); + bool SendWithId(int automation_id, const std::string& str); - void SetAutomationId(const webkit_glue::CppArgumentList& args, - webkit_glue::CppVariant* result); + bool SetAutomationId(int automation_id); - // TODO(vibhor): Implement later - // static CppBindingObjectMethod sendLater; - // static CppBindingObjectMethod sendNow; - - void set_routing_id(int routing_id) { routing_id_ = routing_id; } + private: + explicit DomAutomationController(RenderFrame* render_view); + virtual ~DomAutomationController(); - void set_message_sender(IPC::Sender* sender) { - sender_ = sender; - } + // gin::WrappableBase + virtual gin::ObjectTemplateBuilder GetObjectTemplateBuilder( + v8::Isolate* isolate) OVERRIDE; - private: - IPC::Sender* sender_; + // RenderViewObserver + virtual void OnDestruct() OVERRIDE; - // Refer to the comments at the top of the file for more details. - int routing_id_; // routing id to be used by first channel. int automation_id_; // routing id to be used by the next channel. + + DISALLOW_COPY_AND_ASSIGN(DomAutomationController); }; } // namespace content |