Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(543)

Unified Diff: content/browser/geolocation/gps_location_provider_unittest_linux.cc

Issue 25752005: Geolocation: delete GpsLocationProvider and third_party/gpsd/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « content/browser/geolocation/gps_location_provider_linux.cc ('k') | content/browser/geolocation/location_arbitrator_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698