12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_TEST_CHROMEDRIVER_CHROME_JAVASCRIPT_DIALOG_MANAGER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_TEST_CHROMEDRIVER_CHROME_JAVASCRIPT_DIALOG_MANAGER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <list> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/chromedriver/chrome/devtools_event_listener.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DictionaryValue; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DevToolsClient; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Status; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Tracks the opening and closing of JavaScript dialogs (e.g., alerts). 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class JavaScriptDialogManager : public DevToolsEventListener { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit JavaScriptDialogManager(DevToolsClient* client); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~JavaScriptDialogManager(); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool IsDialogOpen(); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Status GetDialogMessage(std::string* message); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) Status HandleDialog(bool accept, const std::string* text); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Overridden from DevToolsEventListener: 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual Status OnConnected(DevToolsClient* client) OVERRIDE; 36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual Status OnEvent(DevToolsClient* client, 37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const std::string& method, 38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const base::DictionaryValue& params) OVERRIDE; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DevToolsClient* client_; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The queue of unhandled dialogs. This may be greater than 1 in rare 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // cases. E.g., if the page shows an alert but before the manager received 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // the event, a script was injected via Inspector that triggered an alert. 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::list<std::string> unhandled_dialog_queue_; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(JavaScriptDialogManager); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_TEST_CHROMEDRIVER_CHROME_JAVASCRIPT_DIALOG_MANAGER_H_ 52