| Index: content/browser/geolocation/geolocation_provider_unittest.cc
|
| ===================================================================
|
| --- content/browser/geolocation/geolocation_provider_unittest.cc (revision 76230)
|
| +++ content/browser/geolocation/geolocation_provider_unittest.cc (working copy)
|
| @@ -1,151 +0,0 @@
|
| -// 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.
|
| -
|
| -#include "base/singleton.h"
|
| -#include "content/browser/geolocation/arbitrator_dependency_factories_for_test.h"
|
| -#include "content/browser/geolocation/fake_access_token_store.h"
|
| -#include "content/browser/geolocation/geolocation_provider.h"
|
| -#include "content/browser/geolocation/location_arbitrator.h"
|
| -#include "content/browser/geolocation/mock_location_provider.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace {
|
| -
|
| -class GeolocationProviderTest : public testing::Test {
|
| - protected:
|
| - GeolocationProviderTest()
|
| - : provider_(new GeolocationProvider),
|
| - dependency_factory_(
|
| - new GeolocationArbitratorDependencyFactoryWithLocationProvider(
|
| - &NewAutoSuccessMockNetworkLocationProvider))
|
| - {
|
| - }
|
| -
|
| - ~GeolocationProviderTest() {
|
| - DefaultSingletonTraits<GeolocationProvider>::Delete(provider_);
|
| - }
|
| -
|
| - // testing::Test
|
| - virtual void SetUp() {
|
| - GeolocationArbitrator::SetDependencyFactoryForTest(
|
| - dependency_factory_.get());
|
| - }
|
| -
|
| - // testing::Test
|
| - virtual void TearDown() {
|
| - provider_->Stop();
|
| - GeolocationArbitrator::SetDependencyFactoryForTest(NULL);
|
| - }
|
| -
|
| - // Message loop for main thread, as provider depends on it existing.
|
| - MessageLoop message_loop_;
|
| -
|
| - // Object under tests. Owned, but not a scoped_ptr due to specialized
|
| - // destruction protocol.
|
| - GeolocationProvider* provider_;
|
| -
|
| - scoped_refptr<GeolocationArbitratorDependencyFactory> dependency_factory_;
|
| -};
|
| -
|
| -// Regression test for http://crbug.com/59377
|
| -TEST_F(GeolocationProviderTest, OnPermissionGrantedWithoutObservers) {
|
| - EXPECT_FALSE(provider_->HasPermissionBeenGranted());
|
| - provider_->OnPermissionGranted(GURL("http://example.com"));
|
| - EXPECT_TRUE(provider_->HasPermissionBeenGranted());
|
| -}
|
| -
|
| -class NullGeolocationObserver : public GeolocationObserver {
|
| - public:
|
| - // GeolocationObserver
|
| - virtual void OnLocationUpdate(const Geoposition& position) {}
|
| -};
|
| -
|
| -class StartStopMockLocationProvider : public MockLocationProvider {
|
| - public:
|
| - explicit StartStopMockLocationProvider(MessageLoop* test_loop)
|
| - : MockLocationProvider(&instance_),
|
| - test_loop_(test_loop) {
|
| - }
|
| -
|
| - virtual bool StartProvider(bool high_accuracy) {
|
| - bool result = MockLocationProvider::StartProvider(high_accuracy);
|
| - test_loop_->PostTask(FROM_HERE, new MessageLoop::QuitTask);
|
| - return result;
|
| - }
|
| -
|
| - virtual void StopProvider() {
|
| - MockLocationProvider::StopProvider();
|
| - test_loop_->PostTask(FROM_HERE, new MessageLoop::QuitTask);
|
| - }
|
| -
|
| - private:
|
| - MessageLoop* test_loop_;
|
| -};
|
| -
|
| -class MockDependencyFactory : public GeolocationArbitratorDependencyFactory {
|
| - public:
|
| - MockDependencyFactory(MessageLoop* test_loop_,
|
| - AccessTokenStore* access_token_store)
|
| - : test_loop_(test_loop_),
|
| - access_token_store_(access_token_store) {
|
| - }
|
| -
|
| - virtual URLRequestContextGetter* GetContextGetter() {
|
| - return NULL;
|
| - }
|
| -
|
| - virtual GeolocationArbitrator::GetTimeNow GetTimeFunction() {
|
| - return base::Time::Now;
|
| - }
|
| -
|
| - virtual AccessTokenStore* NewAccessTokenStore() {
|
| - return access_token_store_.get();
|
| - }
|
| -
|
| - virtual LocationProviderBase* NewNetworkLocationProvider(
|
| - AccessTokenStore* access_token_store,
|
| - URLRequestContextGetter* context,
|
| - const GURL& url,
|
| - const string16& access_token) {
|
| - return new StartStopMockLocationProvider(test_loop_);
|
| - }
|
| -
|
| - virtual LocationProviderBase* NewSystemLocationProvider() {
|
| - return NULL;
|
| - }
|
| -
|
| - private:
|
| - MessageLoop* test_loop_;
|
| - scoped_refptr<AccessTokenStore> access_token_store_;
|
| -};
|
| -
|
| -TEST_F(GeolocationProviderTest, StartStop) {
|
| - scoped_refptr<FakeAccessTokenStore> fake_access_token_store =
|
| - new FakeAccessTokenStore;
|
| - scoped_refptr<GeolocationArbitratorDependencyFactory> dependency_factory =
|
| - new MockDependencyFactory(&message_loop_, fake_access_token_store.get());
|
| -
|
| - GeolocationArbitrator::SetDependencyFactoryForTest(dependency_factory.get());
|
| -
|
| - EXPECT_FALSE(provider_->IsRunning());
|
| - NullGeolocationObserver null_observer;
|
| - GeolocationObserverOptions options;
|
| - provider_->AddObserver(&null_observer, options);
|
| - // The GeolocationArbitrator won't start the providers until it has
|
| - // finished loading access tokens.
|
| - fake_access_token_store->NotifyDelegateTokensLoaded();
|
| - EXPECT_TRUE(provider_->IsRunning());
|
| - message_loop_.Run();
|
| - EXPECT_EQ(MockLocationProvider::instance_->state_,
|
| - MockLocationProvider::LOW_ACCURACY);
|
| - provider_->RemoveObserver(&null_observer);
|
| - message_loop_.Run();
|
| - EXPECT_EQ(MockLocationProvider::instance_->state_,
|
| - MockLocationProvider::STOPPED);
|
| - EXPECT_TRUE(provider_->IsRunning());
|
| -
|
| - GeolocationArbitrator::SetDependencyFactoryForTest(NULL);
|
| -}
|
| -
|
| -} // namespace
|
|
|