| Index: content/browser/geolocation/gps_location_provider_unittest_linux.cc
|
| diff --git a/content/browser/geolocation/gps_location_provider_unittest_linux.cc b/content/browser/geolocation/gps_location_provider_unittest_linux.cc
|
| deleted file mode 100644
|
| index 41967a45f9602911fd7284ce9943dd97f93a0a28..0000000000000000000000000000000000000000
|
| --- a/content/browser/geolocation/gps_location_provider_unittest_linux.cc
|
| +++ /dev/null
|
| @@ -1,208 +0,0 @@
|
| -// Copyright (c) 2012 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 "content/browser/browser_thread_impl.h"
|
| -#include "content/browser/geolocation/gps_location_provider_linux.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -#include "base/bind.h"
|
| -
|
| -namespace content {
|
| -
|
| -class MockLibGps : public LibGps {
|
| - public:
|
| - MockLibGps();
|
| - virtual ~MockLibGps();
|
| -
|
| - virtual bool GetPositionIfFixed(Geoposition* position) OVERRIDE {
|
| - CHECK(position);
|
| - ++get_position_calls_;
|
| - *position = get_position_;
|
| - return get_position_ret_;
|
| - }
|
| -
|
| - static int gps_open_stub(const char*, const char*, struct gps_data_t*) {
|
| - CHECK(g_instance_);
|
| - g_instance_->gps_open_calls_++;
|
| - return g_instance_->gps_open_ret_;
|
| - }
|
| -
|
| - static int gps_close_stub(struct gps_data_t*) {
|
| - return 0;
|
| - }
|
| -
|
| - static int gps_read_stub(struct gps_data_t*) {
|
| - CHECK(g_instance_);
|
| - g_instance_->gps_read_calls_++;
|
| - return g_instance_->gps_read_ret_;
|
| - }
|
| -
|
| - int get_position_calls_;
|
| - bool get_position_ret_;
|
| - int gps_open_calls_;
|
| - int gps_open_ret_;
|
| - int gps_read_calls_;
|
| - int gps_read_ret_;
|
| - Geoposition get_position_;
|
| - static MockLibGps* g_instance_;
|
| -};
|
| -
|
| -class GeolocationGpsProviderLinuxTests : public testing::Test {
|
| - public:
|
| - GeolocationGpsProviderLinuxTests();
|
| - virtual ~GeolocationGpsProviderLinuxTests();
|
| -
|
| - static LibGps* NewMockLibGps() {
|
| - return new MockLibGps();
|
| - }
|
| - static LibGps* NoLibGpsFactory() {
|
| - return NULL;
|
| - }
|
| -
|
| - protected:
|
| - base::MessageLoop message_loop_;
|
| - BrowserThreadImpl ui_thread_;
|
| - scoped_ptr<LocationProvider> provider_;
|
| -};
|
| -
|
| -void CheckValidPosition(const Geoposition& expected,
|
| - const Geoposition& actual) {
|
| - EXPECT_TRUE(actual.Validate());
|
| - EXPECT_DOUBLE_EQ(expected.latitude, actual.latitude);
|
| - EXPECT_DOUBLE_EQ(expected.longitude, actual.longitude);
|
| - EXPECT_DOUBLE_EQ(expected.accuracy, actual.accuracy);
|
| -}
|
| -
|
| -void QuitMessageLoopAfterUpdate(const LocationProvider* provider,
|
| - const Geoposition& position) {
|
| - base::MessageLoop::current()->Quit();
|
| -}
|
| -
|
| -MockLibGps* MockLibGps::g_instance_ = NULL;
|
| -
|
| -MockLibGps::MockLibGps()
|
| - : get_position_calls_(0),
|
| - get_position_ret_(true),
|
| - gps_open_calls_(0),
|
| - gps_open_ret_(0),
|
| - gps_read_calls_(0),
|
| - gps_read_ret_(0) {
|
| - get_position_.error_code = Geoposition::ERROR_CODE_POSITION_UNAVAILABLE;
|
| - EXPECT_FALSE(g_instance_);
|
| - g_instance_ = this;
|
| -#if defined(USE_LIBGPS)
|
| - libgps_loader_.gps_open = gps_open_stub;
|
| - libgps_loader_.gps_close = gps_close_stub;
|
| - libgps_loader_.gps_read = gps_read_stub;
|
| -#endif // defined(USE_LIBGPS)
|
| -}
|
| -
|
| -MockLibGps::~MockLibGps() {
|
| - EXPECT_EQ(this, g_instance_);
|
| - g_instance_ = NULL;
|
| -}
|
| -
|
| -GeolocationGpsProviderLinuxTests::GeolocationGpsProviderLinuxTests()
|
| - : ui_thread_(BrowserThread::IO, &message_loop_),
|
| - provider_(new GpsLocationProviderLinux(NewMockLibGps)) {
|
| - provider_->SetUpdateCallback(base::Bind(&QuitMessageLoopAfterUpdate));
|
| -}
|
| -
|
| -GeolocationGpsProviderLinuxTests::~GeolocationGpsProviderLinuxTests() {
|
| -}
|
| -
|
| -TEST_F(GeolocationGpsProviderLinuxTests, NoLibGpsInstalled) {
|
| - provider_.reset(new GpsLocationProviderLinux(NoLibGpsFactory));
|
| - ASSERT_TRUE(provider_.get());
|
| - const bool ok = provider_->StartProvider(true);
|
| - EXPECT_FALSE(ok);
|
| - Geoposition position;
|
| - provider_->GetPosition(&position);
|
| - EXPECT_FALSE(position.Validate());
|
| - EXPECT_EQ(Geoposition::ERROR_CODE_POSITION_UNAVAILABLE, position.error_code);
|
| -}
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| -
|
| -TEST_F(GeolocationGpsProviderLinuxTests, GetPosition) {
|
| - ASSERT_TRUE(provider_.get());
|
| - const bool ok = provider_->StartProvider(true);
|
| - EXPECT_TRUE(ok);
|
| - ASSERT_TRUE(MockLibGps::g_instance_);
|
| - EXPECT_EQ(0, MockLibGps::g_instance_->get_position_calls_);
|
| - EXPECT_EQ(0, MockLibGps::g_instance_->gps_open_calls_);
|
| - EXPECT_EQ(0, MockLibGps::g_instance_->gps_read_calls_);
|
| - Geoposition position;
|
| - provider_->GetPosition(&position);
|
| - EXPECT_FALSE(position.Validate());
|
| - EXPECT_EQ(Geoposition::ERROR_CODE_POSITION_UNAVAILABLE, position.error_code);
|
| - MockLibGps::g_instance_->get_position_.error_code =
|
| - Geoposition::ERROR_CODE_NONE;
|
| - MockLibGps::g_instance_->get_position_.latitude = 4.5;
|
| - MockLibGps::g_instance_->get_position_.longitude = -34.1;
|
| - MockLibGps::g_instance_->get_position_.accuracy = 345;
|
| - MockLibGps::g_instance_->get_position_.timestamp =
|
| - base::Time::FromDoubleT(200);
|
| - EXPECT_TRUE(MockLibGps::g_instance_->get_position_.Validate());
|
| - base::MessageLoop::current()->Run();
|
| - EXPECT_EQ(1, MockLibGps::g_instance_->get_position_calls_);
|
| - EXPECT_EQ(1, MockLibGps::g_instance_->gps_open_calls_);
|
| - EXPECT_EQ(1, MockLibGps::g_instance_->gps_read_calls_);
|
| - provider_->GetPosition(&position);
|
| - CheckValidPosition(MockLibGps::g_instance_->get_position_, position);
|
| -
|
| - // Movement. This will block for up to half a second.
|
| - MockLibGps::g_instance_->get_position_.latitude += 0.01;
|
| - base::MessageLoop::current()->Run();
|
| - provider_->GetPosition(&position);
|
| - EXPECT_EQ(2, MockLibGps::g_instance_->get_position_calls_);
|
| - EXPECT_EQ(1, MockLibGps::g_instance_->gps_open_calls_);
|
| - EXPECT_EQ(2, MockLibGps::g_instance_->gps_read_calls_);
|
| - CheckValidPosition(MockLibGps::g_instance_->get_position_, position);
|
| -}
|
| -
|
| -void EnableGpsOpenCallback() {
|
| - CHECK(MockLibGps::g_instance_);
|
| - MockLibGps::g_instance_->gps_open_ret_ = 0;
|
| -}
|
| -
|
| -TEST_F(GeolocationGpsProviderLinuxTests, LibGpsReconnect) {
|
| - // Setup gpsd reconnect interval to be 1000ms to speed up test.
|
| - GpsLocationProviderLinux* gps_provider =
|
| - static_cast<GpsLocationProviderLinux*>(provider_.get());
|
| - gps_provider->SetGpsdReconnectIntervalMillis(1000);
|
| - gps_provider->SetPollPeriodMovingMillis(200);
|
| - const bool ok = provider_->StartProvider(true);
|
| - EXPECT_TRUE(ok);
|
| - ASSERT_TRUE(MockLibGps::g_instance_);
|
| - // Let gps_open() fails, and so will LibGps::Start().
|
| - // Reconnect will happen in 1000ms.
|
| - MockLibGps::g_instance_->gps_open_ret_ = 1;
|
| - Geoposition position;
|
| - MockLibGps::g_instance_->get_position_.error_code =
|
| - Geoposition::ERROR_CODE_NONE;
|
| - MockLibGps::g_instance_->get_position_.latitude = 4.5;
|
| - MockLibGps::g_instance_->get_position_.longitude = -34.1;
|
| - MockLibGps::g_instance_->get_position_.accuracy = 345;
|
| - MockLibGps::g_instance_->get_position_.timestamp =
|
| - base::Time::FromDoubleT(200);
|
| - EXPECT_TRUE(MockLibGps::g_instance_->get_position_.Validate());
|
| - // This task makes gps_open() and LibGps::Start() to succeed after
|
| - // 1500ms.
|
| - base::MessageLoop::current()->PostDelayedTask(
|
| - FROM_HERE,
|
| - base::Bind(&EnableGpsOpenCallback),
|
| - base::TimeDelta::FromMilliseconds(1500));
|
| - base::MessageLoop::current()->Run();
|
| - provider_->GetPosition(&position);
|
| - EXPECT_TRUE(position.Validate());
|
| - // 3 gps_open() calls are expected (2 failures and 1 success)
|
| - EXPECT_EQ(1, MockLibGps::g_instance_->get_position_calls_);
|
| - EXPECT_EQ(3, MockLibGps::g_instance_->gps_open_calls_);
|
| - EXPECT_EQ(1, MockLibGps::g_instance_->gps_read_calls_);
|
| -}
|
| -
|
| -#endif // #if defined(OS_CHROMEOS)
|
| -
|
| -} // namespace content
|
|
|