diff options
Diffstat (limited to 'chrome/browser/geolocation/mock_location_provider.h')
-rw-r--r-- | chrome/browser/geolocation/mock_location_provider.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/chrome/browser/geolocation/mock_location_provider.h b/chrome/browser/geolocation/mock_location_provider.h new file mode 100644 index 0000000..d2c775f --- /dev/null +++ b/chrome/browser/geolocation/mock_location_provider.h @@ -0,0 +1,57 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_GEOLOCATION_MOCK_LOCATION_PROVIDER_H_ +#define CHROME_BROWSER_GEOLOCATION_MOCK_LOCATION_PROVIDER_H_ + +#include "chrome/browser/geolocation/location_provider.h" +#include "chrome/common/geoposition.h" +#include "googleurl/src/gurl.h" + +// Mock implementation of a location provider for testing. +class MockLocationProvider : public LocationProviderBase { + public: + // Will update |*self_ref| to point to |this| on construction, and to NULL + // on destruction. + explicit MockLocationProvider(MockLocationProvider** self_ref); + ~MockLocationProvider(); + + using LocationProviderBase::UpdateListeners; + + // LocationProviderBase implementation. + virtual bool StartProvider(bool high_accuracy); + virtual void StopProvider(); + virtual void GetPosition(Geoposition* position); + virtual void OnPermissionGranted(const GURL& requesting_frame); + + Geoposition position_; + enum { STOPPED, LOW_ACCURACY, HIGH_ACCURACY } state_; + GURL permission_granted_url_; + MockLocationProvider** self_ref_; + + // Set when an instance of the mock is created via a factory function. + static MockLocationProvider* instance_; + + DISALLOW_COPY_AND_ASSIGN(MockLocationProvider); +}; + +// Factory functions for the various sorts of mock location providers, +// for use with GeolocationArbitrator::SetProviderFactoryForTest (i.e. +// not intended for test code to use to get access to the mock, you can use +// MockLocationProvider::instance_ for this, or make a custom factory method). + +// Creates a mock location provider with no default behavior. +LocationProviderBase* NewMockLocationProvider(); +// Creates a mock location provider that automatically notifies its +// listeners with a valid location when StartProvider is called. +LocationProviderBase* NewAutoSuccessMockLocationProvider(); +// Creates a mock location provider that automatically notifies its +// listeners with an error when StartProvider is called. +LocationProviderBase* NewAutoFailMockLocationProvider(); +// Similar to NewAutoSuccessMockLocationProvider but mimicks the behavior of +// the Network Location provider, in deferring making location updates until +// a permission request has been confirmed. +LocationProviderBase* NewAutoSuccessMockNetworkLocationProvider(); + +#endif // CHROME_BROWSER_GEOLOCATION_MOCK_LOCATION_PROVIDER_H_ |