Upstream version 5.34.104.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 class DebuggerTracker;
23 class DevToolsClient;
24 class DomTracker;
25 class FrameTracker;
26 class GeolocationOverrideManager;
27 class HeapSnapshotTaker;
28 struct KeyEvent;
29 struct MouseEvent;
30 class NavigationTracker;
31 class Status;
32
33 class WebViewImpl : public WebView {
34  public:
35   WebViewImpl(const std::string& id,
36               int build_no,
37               scoped_ptr<DevToolsClient> client);
38   virtual ~WebViewImpl();
39
40   // Overridden from WebView:
41   virtual std::string GetId() OVERRIDE;
42   virtual bool WasCrashed() OVERRIDE;
43   virtual Status ConnectIfNecessary() OVERRIDE;
44   virtual Status HandleReceivedEvents() OVERRIDE;
45   virtual Status Load(const std::string& url) OVERRIDE;
46   virtual Status Reload() OVERRIDE;
47   virtual Status EvaluateScript(const std::string& frame,
48                                 const std::string& expression,
49                                 scoped_ptr<base::Value>* result) OVERRIDE;
50   virtual Status CallFunction(const std::string& frame,
51                               const std::string& function,
52                               const base::ListValue& args,
53                               scoped_ptr<base::Value>* result) OVERRIDE;
54   virtual Status CallAsyncFunction(const std::string& frame,
55                                    const std::string& function,
56                                    const base::ListValue& args,
57                                    const base::TimeDelta& timeout,
58                                    scoped_ptr<base::Value>* result) OVERRIDE;
59   virtual Status CallUserAsyncFunction(
60       const std::string& frame,
61       const std::string& function,
62       const base::ListValue& args,
63       const base::TimeDelta& timeout,
64       scoped_ptr<base::Value>* result) OVERRIDE;
65   virtual Status GetFrameByFunction(const std::string& frame,
66                                     const std::string& function,
67                                     const base::ListValue& args,
68                                     std::string* out_frame) OVERRIDE;
69   virtual Status DispatchMouseEvents(
70       const std::list<MouseEvent>& events, const std::string& frame) OVERRIDE;
71   virtual Status DispatchTouchEvent(const TouchEvent& event) OVERRIDE;
72   virtual Status DispatchTouchEvents(
73       const std::list<TouchEvent>& events) OVERRIDE;
74   virtual Status DispatchKeyEvents(const std::list<KeyEvent>& events) OVERRIDE;
75   virtual Status GetCookies(scoped_ptr<base::ListValue>* cookies) OVERRIDE;
76   virtual Status DeleteCookie(const std::string& name,
77                               const std::string& url) OVERRIDE;
78   virtual Status WaitForPendingNavigations(const std::string& frame_id,
79                                            const base::TimeDelta& timeout,
80                                            bool stop_load_on_timeout) OVERRIDE;
81   virtual Status IsPendingNavigation(
82       const std::string& frame_id, bool* is_pending) OVERRIDE;
83   virtual JavaScriptDialogManager* GetJavaScriptDialogManager() OVERRIDE;
84   virtual Status OverrideGeolocation(const Geoposition& geoposition) OVERRIDE;
85   virtual Status CaptureScreenshot(std::string* screenshot) OVERRIDE;
86   virtual Status SetFileInputFiles(
87       const std::string& frame,
88       const base::DictionaryValue& element,
89       const std::vector<base::FilePath>& files) OVERRIDE;
90   virtual Status TakeHeapSnapshot(scoped_ptr<base::Value>* snapshot) OVERRIDE;
91
92  private:
93   Status CallAsyncFunctionInternal(const std::string& frame,
94                                    const std::string& function,
95                                    const base::ListValue& args,
96                                    bool is_user_supplied,
97                                    const base::TimeDelta& timeout,
98                                    scoped_ptr<base::Value>* result);
99   Status IsNotPendingNavigation(const std::string& frame_id,
100                                 bool* is_not_pending);
101   std::string id_;
102   int build_no_;
103   scoped_ptr<DomTracker> dom_tracker_;
104   scoped_ptr<FrameTracker> frame_tracker_;
105   scoped_ptr<NavigationTracker> navigation_tracker_;
106   scoped_ptr<JavaScriptDialogManager> dialog_manager_;
107   scoped_ptr<GeolocationOverrideManager> geolocation_override_manager_;
108   scoped_ptr<HeapSnapshotTaker> heap_snapshot_taker_;
109   scoped_ptr<DebuggerTracker> debugger_;
110   scoped_ptr<DevToolsClient> client_;
111 };
112
113 namespace internal {
114
115 enum EvaluateScriptReturnType {
116   ReturnByValue,
117   ReturnByObject
118 };
119 Status EvaluateScript(DevToolsClient* client,
120                       int context_id,
121                       const std::string& expression,
122                       EvaluateScriptReturnType return_type,
123                       scoped_ptr<base::DictionaryValue>* result);
124 Status EvaluateScriptAndGetObject(DevToolsClient* client,
125                                   int context_id,
126                                   const std::string& expression,
127                                   bool* got_object,
128                                   std::string* object_id);
129 Status EvaluateScriptAndGetValue(DevToolsClient* client,
130                                  int context_id,
131                                  const std::string& expression,
132                                  scoped_ptr<base::Value>* result);
133 Status ParseCallFunctionResult(const base::Value& temp_result,
134                                scoped_ptr<base::Value>* result);
135 Status GetNodeIdFromFunction(DevToolsClient* client,
136                              int context_id,
137                              const std::string& function,
138                              const base::ListValue& args,
139                              bool* found_node,
140                              int* node_id);
141
142 }  // namespace internal
143
144 #endif  // CHROME_TEST_CHROMEDRIVER_CHROME_WEB_VIEW_IMPL_H_