Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / test / chromedriver / chrome / web_view_impl.h
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_TEST_CHROMEDRIVER_CHROME_WEB_VIEW_IMPL_H_
6 #define CHROME_TEST_CHROMEDRIVER_CHROME_WEB_VIEW_IMPL_H_
7
8 #include <list>
9 #include <string>
10
11 #include "base/callback.h"
12 #include "base/compiler_specific.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "chrome/test/chromedriver/chrome/web_view.h"
15
16 namespace base {
17 class DictionaryValue;
18 class ListValue;
19 class Value;
20 }
21
22 struct BrowserInfo;
23 class DebuggerTracker;
24 class DevToolsClient;
25 class DomTracker;
26 class FrameTracker;
27 class GeolocationOverrideManager;
28 class HeapSnapshotTaker;
29 struct KeyEvent;
30 struct MouseEvent;
31 class NavigationTracker;
32 class Status;
33
34 class WebViewImpl : public WebView {
35  public:
36   WebViewImpl(const std::string& id,
37               const BrowserInfo* browser_info,
38               scoped_ptr<DevToolsClient> client);
39   virtual ~WebViewImpl();
40
41   // Overridden from WebView:
42   virtual std::string GetId() OVERRIDE;
43   virtual bool WasCrashed() OVERRIDE;
44   virtual Status ConnectIfNecessary() OVERRIDE;
45   virtual Status HandleReceivedEvents() OVERRIDE;
46   virtual Status Load(const std::string& url) OVERRIDE;
47   virtual Status Reload() OVERRIDE;
48   virtual Status EvaluateScript(const std::string& frame,
49                                 const std::string& expression,
50                                 scoped_ptr<base::Value>* result) OVERRIDE;
51   virtual Status CallFunction(const std::string& frame,
52                               const std::string& function,
53                               const base::ListValue& args,
54                               scoped_ptr<base::Value>* result) OVERRIDE;
55   virtual Status CallAsyncFunction(const std::string& frame,
56                                    const std::string& function,
57                                    const base::ListValue& args,
58                                    const base::TimeDelta& timeout,
59                                    scoped_ptr<base::Value>* result) OVERRIDE;
60   virtual Status CallUserAsyncFunction(
61       const std::string& frame,
62       const std::string& function,
63       const base::ListValue& args,
64       const base::TimeDelta& timeout,
65       scoped_ptr<base::Value>* result) OVERRIDE;
66   virtual Status GetFrameByFunction(const std::string& frame,
67                                     const std::string& function,
68                                     const base::ListValue& args,
69                                     std::string* out_frame) OVERRIDE;
70   virtual Status DispatchMouseEvents(
71       const std::list<MouseEvent>& events, const std::string& frame) OVERRIDE;
72   virtual Status DispatchTouchEvent(const TouchEvent& event) OVERRIDE;
73   virtual Status DispatchTouchEvents(
74       const std::list<TouchEvent>& events) OVERRIDE;
75   virtual Status DispatchKeyEvents(const std::list<KeyEvent>& events) OVERRIDE;
76   virtual Status GetCookies(scoped_ptr<base::ListValue>* cookies) OVERRIDE;
77   virtual Status DeleteCookie(const std::string& name,
78                               const std::string& url) OVERRIDE;
79   virtual Status WaitForPendingNavigations(const std::string& frame_id,
80                                            const base::TimeDelta& timeout,
81                                            bool stop_load_on_timeout) OVERRIDE;
82   virtual Status IsPendingNavigation(
83       const std::string& frame_id, bool* is_pending) OVERRIDE;
84   virtual JavaScriptDialogManager* GetJavaScriptDialogManager() OVERRIDE;
85   virtual Status OverrideGeolocation(const Geoposition& geoposition) OVERRIDE;
86   virtual Status CaptureScreenshot(std::string* screenshot) OVERRIDE;
87   virtual Status SetFileInputFiles(
88       const std::string& frame,
89       const base::DictionaryValue& element,
90       const std::vector<base::FilePath>& files) OVERRIDE;
91   virtual Status TakeHeapSnapshot(scoped_ptr<base::Value>* snapshot) OVERRIDE;
92
93  private:
94   Status CallAsyncFunctionInternal(const std::string& frame,
95                                    const std::string& function,
96                                    const base::ListValue& args,
97                                    bool is_user_supplied,
98                                    const base::TimeDelta& timeout,
99                                    scoped_ptr<base::Value>* result);
100   Status IsNotPendingNavigation(const std::string& frame_id,
101                                 bool* is_not_pending);
102   std::string id_;
103   const BrowserInfo* browser_info_;
104   scoped_ptr<DomTracker> dom_tracker_;
105   scoped_ptr<FrameTracker> frame_tracker_;
106   scoped_ptr<NavigationTracker> navigation_tracker_;
107   scoped_ptr<JavaScriptDialogManager> dialog_manager_;
108   scoped_ptr<GeolocationOverrideManager> geolocation_override_manager_;
109   scoped_ptr<HeapSnapshotTaker> heap_snapshot_taker_;
110   scoped_ptr<DebuggerTracker> debugger_;
111   scoped_ptr<DevToolsClient> client_;
112 };
113
114 namespace internal {
115
116 enum EvaluateScriptReturnType {
117   ReturnByValue,
118   ReturnByObject
119 };
120 Status EvaluateScript(DevToolsClient* client,
121                       int context_id,
122                       const std::string& expression,
123                       EvaluateScriptReturnType return_type,
124                       scoped_ptr<base::DictionaryValue>* result);
125 Status EvaluateScriptAndGetObject(DevToolsClient* client,
126                                   int context_id,
127                                   const std::string& expression,
128                                   bool* got_object,
129                                   std::string* object_id);
130 Status EvaluateScriptAndGetValue(DevToolsClient* client,
131                                  int context_id,
132                                  const std::string& expression,
133                                  scoped_ptr<base::Value>* result);
134 Status ParseCallFunctionResult(const base::Value& temp_result,
135                                scoped_ptr<base::Value>* result);
136 Status GetNodeIdFromFunction(DevToolsClient* client,
137                              int context_id,
138                              const std::string& function,
139                              const base::ListValue& args,
140                              bool* found_node,
141                              int* node_id);
142
143 }  // namespace internal
144
145 #endif  // CHROME_TEST_CHROMEDRIVER_CHROME_WEB_VIEW_IMPL_H_