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.
5 #ifndef CHROME_TEST_CHROMEDRIVER_CHROME_WEB_VIEW_IMPL_H_
6 #define CHROME_TEST_CHROMEDRIVER_CHROME_WEB_VIEW_IMPL_H_
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"
17 class DictionaryValue;
23 class DebuggerTracker;
27 class GeolocationOverrideManager;
28 class HeapSnapshotTaker;
31 class NavigationTracker;
34 class WebViewImpl : public WebView {
36 WebViewImpl(const std::string& id,
37 const BrowserInfo* browser_info,
38 scoped_ptr<DevToolsClient> client);
39 virtual ~WebViewImpl();
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;
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);
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_;
116 enum EvaluateScriptReturnType {
120 Status EvaluateScript(DevToolsClient* client,
122 const std::string& expression,
123 EvaluateScriptReturnType return_type,
124 scoped_ptr<base::DictionaryValue>* result);
125 Status EvaluateScriptAndGetObject(DevToolsClient* client,
127 const std::string& expression,
129 std::string* object_id);
130 Status EvaluateScriptAndGetValue(DevToolsClient* client,
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,
138 const std::string& function,
139 const base::ListValue& args,
143 } // namespace internal
145 #endif // CHROME_TEST_CHROMEDRIVER_CHROME_WEB_VIEW_IMPL_H_