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_JAVASCRIPT_DIALOG_MANAGER_H_ 6#define CHROME_TEST_CHROMEDRIVER_CHROME_JAVASCRIPT_DIALOG_MANAGER_H_ 7 8#include <list> 9#include <string> 10 11#include "base/basictypes.h" 12#include "base/compiler_specific.h" 13#include "chrome/test/chromedriver/chrome/devtools_event_listener.h" 14 15namespace base { 16class DictionaryValue; 17} 18 19class DevToolsClient; 20class Status; 21 22// Tracks the opening and closing of JavaScript dialogs (e.g., alerts). 23class JavaScriptDialogManager : public DevToolsEventListener { 24 public: 25 explicit JavaScriptDialogManager(DevToolsClient* client); 26 virtual ~JavaScriptDialogManager(); 27 28 bool IsDialogOpen(); 29 30 Status GetDialogMessage(std::string* message); 31 32 Status HandleDialog(bool accept, const std::string* text); 33 34 // Overridden from DevToolsEventListener: 35 virtual Status OnConnected(DevToolsClient* client) OVERRIDE; 36 virtual Status OnEvent(DevToolsClient* client, 37 const std::string& method, 38 const base::DictionaryValue& params) OVERRIDE; 39 40 private: 41 DevToolsClient* client_; 42 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_; 47 48 DISALLOW_COPY_AND_ASSIGN(JavaScriptDialogManager); 49}; 50 51#endif // CHROME_TEST_CHROMEDRIVER_CHROME_JAVASCRIPT_DIALOG_MANAGER_H_ 52