Roll src/third_party/WebKit bf18a82:a9cee16 (svn 185297:185304)
[chromium-blink-merge.git] / chrome / test / chromedriver / chrome / navigation_tracker.h
bloba75a094178026570a29aabd2c0bce8fa448bf4e3
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_NAVIGATION_TRACKER_H_
6 #define CHROME_TEST_CHROMEDRIVER_CHROME_NAVIGATION_TRACKER_H_
8 #include <set>
9 #include <string>
11 #include "base/basictypes.h"
12 #include "base/compiler_specific.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "chrome/test/chromedriver/chrome/devtools_event_listener.h"
15 #include "chrome/test/chromedriver/chrome/status.h"
17 namespace base {
18 class DictionaryValue;
21 struct BrowserInfo;
22 class DevToolsClient;
23 class Status;
25 // Tracks the navigation state of the page.
26 class NavigationTracker : public DevToolsEventListener {
27 public:
28 enum LoadingState {
29 kUnknown,
30 kLoading,
31 kNotLoading,
34 NavigationTracker(DevToolsClient* client, const BrowserInfo* browser_info);
36 NavigationTracker(DevToolsClient* client,
37 LoadingState known_state,
38 const BrowserInfo* browser_info);
40 ~NavigationTracker() override;
42 // Gets whether a navigation is pending for the specified frame. |frame_id|
43 // may be empty to signify the main frame.
44 Status IsPendingNavigation(const std::string& frame_id, bool* is_pending);
46 // Overridden from DevToolsEventListener:
47 Status OnConnected(DevToolsClient* client) override;
48 Status OnEvent(DevToolsClient* client,
49 const std::string& method,
50 const base::DictionaryValue& params) override;
51 Status OnCommandSuccess(DevToolsClient* client,
52 const std::string& method) override;
54 private:
55 DevToolsClient* client_;
56 LoadingState loading_state_;
57 const BrowserInfo* browser_info_;
58 std::set<std::string> pending_frame_set_;
59 std::set<std::string> scheduled_frame_set_;
61 void ResetLoadingState(LoadingState loading_state);
63 DISALLOW_COPY_AND_ASSIGN(NavigationTracker);
66 #endif // CHROME_TEST_CHROMEDRIVER_CHROME_NAVIGATION_TRACKER_H_