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_GEOLOCATION_OVERRIDE_MANAGER_H_ 6 #define CHROME_TEST_CHROMEDRIVER_CHROME_GEOLOCATION_OVERRIDE_MANAGER_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 #include "base/memory/scoped_ptr.h" 13 #include "chrome/test/chromedriver/chrome/devtools_event_listener.h" 14 15 namespace base { 16 class DictionaryValue; 17 } 18 19 class DevToolsClient; 20 struct Geoposition; 21 class Status; 22 23 // Overrides the geolocation, if requested, for the duration of the 24 // given |DevToolsClient|'s lifetime. 25 class GeolocationOverrideManager : public DevToolsEventListener { 26 public: 27 explicit GeolocationOverrideManager(DevToolsClient* client); 28 virtual ~GeolocationOverrideManager(); 29 30 Status OverrideGeolocation(const Geoposition& geoposition); 31 32 // Overridden from DevToolsEventListener: 33 virtual Status OnConnected(DevToolsClient* client) OVERRIDE; 34 virtual Status OnEvent(DevToolsClient* client, 35 const std::string& method, 36 const base::DictionaryValue& params) OVERRIDE; 37 38 private: 39 Status ApplyOverrideIfNeeded(); 40 41 DevToolsClient* client_; 42 scoped_ptr<Geoposition> overridden_geoposition_; 43 44 DISALLOW_COPY_AND_ASSIGN(GeolocationOverrideManager); 45 }; 46 47 #endif // CHROME_TEST_CHROMEDRIVER_CHROME_GEOLOCATION_OVERRIDE_MANAGER_H_ 48