// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_TEST_CHROMEDRIVER_SESSION_H_ #define CHROME_TEST_CHROMEDRIVER_SESSION_H_ #include #include #include "base/basictypes.h" #include "base/files/scoped_temp_dir.h" #include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.h" #include "base/time/time.h" #include "chrome/test/chromedriver/basic_types.h" #include "chrome/test/chromedriver/chrome/device_metrics.h" #include "chrome/test/chromedriver/chrome/geoposition.h" #include "chrome/test/chromedriver/command_listener.h" namespace base { class DictionaryValue; } class Chrome; class Status; class WebDriverLog; class WebView; struct FrameInfo { FrameInfo(const std::string& parent_frame_id, const std::string& frame_id, const std::string& chromedriver_frame_id); std::string parent_frame_id; std::string frame_id; std::string chromedriver_frame_id; }; struct Session { static const base::TimeDelta kDefaultPageLoadTimeout; explicit Session(const std::string& id); Session(const std::string& id, scoped_ptr chrome); ~Session(); Status GetTargetWindow(WebView** web_view); void SwitchToTopFrame(); void SwitchToParentFrame(); void SwitchToSubFrame(const std::string& frame_id, const std::string& chromedriver_frame_id); std::string GetCurrentFrameId() const; std::vector GetAllLogs() const; std::string GetFirstBrowserError() const; const std::string id; bool quit; bool detach; bool force_devtools_screenshot; scoped_ptr chrome; std::string window; int sticky_modifiers; // List of |FrameInfo|s for each frame to the current target frame from the // first frame element in the root document. If target frame is window.top, // this list will be empty. std::list frames; WebPoint mouse_position; base::TimeDelta implicit_wait; base::TimeDelta page_load_timeout; base::TimeDelta script_timeout; scoped_ptr prompt_text; scoped_ptr overridden_geoposition; scoped_ptr overridden_device_metrics; // Logs that populate from DevTools events. ScopedVector devtools_logs; scoped_ptr driver_log; base::ScopedTempDir temp_dir; scoped_ptr capabilities; bool auto_reporting_enabled; // |command_listeners| should be declared after |chrome|. When the |Session| // is destroyed, |command_listeners| should be freed first, since some // |CommandListener|s might be |CommandListenerProxy|s that forward to // |DevToolsEventListener|s owned by |chrome|. ScopedVector command_listeners; }; Session* GetThreadLocalSession(); void SetThreadLocalSession(scoped_ptr session); #endif // CHROME_TEST_CHROMEDRIVER_SESSION_H_