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_JAVASCRIPT_DIALOG_MANAGER_H_
6 #define CHROME_TEST_CHROMEDRIVER_CHROME_JAVASCRIPT_DIALOG_MANAGER_H_
11 #include "base/basictypes.h"
12 #include "base/compiler_specific.h"
13 #include "chrome/test/chromedriver/chrome/devtools_event_listener.h"
16 class DictionaryValue;
22 // Tracks the opening and closing of JavaScript dialogs (e.g., alerts).
23 class JavaScriptDialogManager : public DevToolsEventListener {
25 explicit JavaScriptDialogManager(DevToolsClient* client);
26 ~JavaScriptDialogManager() override;
30 Status GetDialogMessage(std::string* message);
32 Status HandleDialog(bool accept, const std::string* text);
34 // Overridden from DevToolsEventListener:
35 Status OnConnected(DevToolsClient* client) override;
36 Status OnEvent(DevToolsClient* client,
37 const std::string& method,
38 const base::DictionaryValue& params) override;
41 DevToolsClient* client_;
43 // The queue of unhandled dialogs. This may be greater than 1 in rare
44 // cases. E.g., if the page shows an alert but before the manager received
45 // the event, a script was injected via Inspector that triggered an alert.
46 std::list<std::string> unhandled_dialog_queue_;
48 DISALLOW_COPY_AND_ASSIGN(JavaScriptDialogManager);
51 #endif // CHROME_TEST_CHROMEDRIVER_CHROME_JAVASCRIPT_DIALOG_MANAGER_H_