| Index: content/browser/geofencing/geofencing_service_unittest.cc
 | 
| diff --git a/content/browser/geofencing/geofencing_service_unittest.cc b/content/browser/geofencing/geofencing_service_unittest.cc
 | 
| deleted file mode 100644
 | 
| index 437580eff14c4764f59cbd76b7390c5d7aa9d4d7..0000000000000000000000000000000000000000
 | 
| --- a/content/browser/geofencing/geofencing_service_unittest.cc
 | 
| +++ /dev/null
 | 
| @@ -1,198 +0,0 @@
 | 
| -// Copyright 2014 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/geofencing/geofencing_service.h"
 | 
| -
 | 
| -#include <stdint.h>
 | 
| -
 | 
| -#include "base/memory/ptr_util.h"
 | 
| -#include "content/browser/geofencing/geofencing_provider.h"
 | 
| -#include "content/browser/geofencing/geofencing_registration_delegate.h"
 | 
| -#include "content/public/test/test_browser_thread_bundle.h"
 | 
| -#include "content/public/test/test_utils.h"
 | 
| -#include "testing/gmock/include/gmock/gmock.h"
 | 
| -#include "testing/gtest/include/gtest/gtest.h"
 | 
| -#include "third_party/WebKit/public/platform/WebCircularGeofencingRegion.h"
 | 
| -
 | 
| -using blink::WebCircularGeofencingRegion;
 | 
| -
 | 
| -namespace {
 | 
| -
 | 
| -bool RegionsMatch(const WebCircularGeofencingRegion& expected,
 | 
| -                  const WebCircularGeofencingRegion& arg) {
 | 
| -  return testing::Matches(expected.latitude)(arg.latitude) &&
 | 
| -         testing::Matches(expected.longitude)(arg.longitude) &&
 | 
| -         testing::Matches(expected.radius)(arg.radius);
 | 
| -}
 | 
| -
 | 
| -}  // namespace
 | 
| -
 | 
| -namespace content {
 | 
| -
 | 
| -class MockGeofencingRegistrationDelegate
 | 
| -    : public GeofencingRegistrationDelegate {
 | 
| - public:
 | 
| -  MOCK_METHOD2(RegistrationFinished,
 | 
| -               void(int64_t geofencing_registration_id,
 | 
| -                    GeofencingStatus status));
 | 
| -  MOCK_METHOD1(RegionEntered, void(int64_t geofencing_registration_id));
 | 
| -  MOCK_METHOD1(RegionExited, void(int64_t geofencing_registration_id));
 | 
| -};
 | 
| -
 | 
| -class MockGeofencingProvider : public GeofencingProvider {
 | 
| - public:
 | 
| -  MOCK_METHOD3(RegisterRegion,
 | 
| -               void(int64_t geofencing_registration_id,
 | 
| -                    const blink::WebCircularGeofencingRegion& region,
 | 
| -                    const StatusCallback& callback));
 | 
| -  MOCK_METHOD1(UnregisterRegion, void(int64_t geofencing_registration_id));
 | 
| -};
 | 
| -
 | 
| -ACTION_P(QuitRunner, runner) {
 | 
| -  runner->Quit();
 | 
| -}
 | 
| -
 | 
| -ACTION_P(SaveRegistrationId, geofencing_registration_id) {
 | 
| -  *geofencing_registration_id = arg0;
 | 
| -}
 | 
| -
 | 
| -ACTION_P(SaveStatusCallback, callback) {
 | 
| -  *callback = arg2;
 | 
| -}
 | 
| -
 | 
| -MATCHER_P(WebCircularGeofencingRegionEq, expected, "") {
 | 
| -  return RegionsMatch(expected, arg);
 | 
| -}
 | 
| -
 | 
| -class GeofencingServiceTest : public testing::Test {
 | 
| - public:
 | 
| -  GeofencingServiceTest() : service_(nullptr) {
 | 
| -    test_region_.latitude = 37.421999;
 | 
| -    test_region_.longitude = -122.084015;
 | 
| -    test_region_.radius = 100;
 | 
| -  }
 | 
| -
 | 
| -  void SetUp() override { service_ = new GeofencingServiceImpl(); }
 | 
| -
 | 
| -  void TearDown() override { delete service_; }
 | 
| -
 | 
| -  void SetProviderForTests() {
 | 
| -    provider_ = new MockGeofencingProvider();
 | 
| -    service_->SetProviderForTesting(base::WrapUnique(provider_));
 | 
| -  }
 | 
| -
 | 
| -  int RegistrationCount() { return service_->RegistrationCountForTesting(); }
 | 
| -
 | 
| -  int64_t RegisterRegionSync(const WebCircularGeofencingRegion& region,
 | 
| -                             GeofencingStatus provider_status) {
 | 
| -    scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner());
 | 
| -
 | 
| -    // The registration ID that is passed to the provider.
 | 
| -    int64_t provider_registration_id = -1;
 | 
| -    // The callback that is passed to the provider.
 | 
| -    GeofencingProvider::StatusCallback callback;
 | 
| -
 | 
| -    EXPECT_CALL(
 | 
| -        *provider_,
 | 
| -        RegisterRegion(
 | 
| -            testing::_, WebCircularGeofencingRegionEq(region), testing::_))
 | 
| -        .WillOnce(testing::DoAll(SaveRegistrationId(&provider_registration_id),
 | 
| -                                 SaveStatusCallback(&callback)));
 | 
| -
 | 
| -    int64_t geofencing_registration_id =
 | 
| -        service_->RegisterRegion(region, &delegate_);
 | 
| -
 | 
| -    // Service should have synchronously called the provider.
 | 
| -    CHECK(!callback.is_null());
 | 
| -    CHECK(provider_registration_id == geofencing_registration_id);
 | 
| -
 | 
| -    // Finish up registration by calling the callback and waiting for the
 | 
| -    // delegate to be called.
 | 
| -    EXPECT_CALL(
 | 
| -        delegate_,
 | 
| -        RegistrationFinished(geofencing_registration_id, provider_status))
 | 
| -        .WillOnce(QuitRunner(runner));
 | 
| -    callback.Run(provider_status);
 | 
| -    runner->Run();
 | 
| -    return geofencing_registration_id;
 | 
| -  }
 | 
| -
 | 
| - protected:
 | 
| -  TestBrowserThreadBundle threads_;
 | 
| -  GeofencingServiceImpl* service_;
 | 
| -  MockGeofencingProvider* provider_;
 | 
| -  MockGeofencingRegistrationDelegate delegate_;
 | 
| -
 | 
| -  WebCircularGeofencingRegion test_region_;
 | 
| -};
 | 
| -
 | 
| -TEST_F(GeofencingServiceTest, RegisterRegion_NoProvider) {
 | 
| -  scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner());
 | 
| -  int64_t geofencing_registration_id =
 | 
| -      service_->RegisterRegion(test_region_, &delegate_);
 | 
| -  EXPECT_CALL(delegate_,
 | 
| -              RegistrationFinished(
 | 
| -                  geofencing_registration_id,
 | 
| -                  GEOFENCING_STATUS_OPERATION_FAILED_SERVICE_NOT_AVAILABLE))
 | 
| -      .WillOnce(QuitRunner(runner));
 | 
| -  runner->Run();
 | 
| -  EXPECT_EQ(0, RegistrationCount());
 | 
| -}
 | 
| -
 | 
| -TEST_F(GeofencingServiceTest, RegisterRegion_FailsInProvider) {
 | 
| -  SetProviderForTests();
 | 
| -  RegisterRegionSync(test_region_, GEOFENCING_STATUS_ERROR);
 | 
| -  EXPECT_EQ(0, RegistrationCount());
 | 
| -}
 | 
| -
 | 
| -TEST_F(GeofencingServiceTest, RegisterRegion_SucceedsInProvider) {
 | 
| -  SetProviderForTests();
 | 
| -  RegisterRegionSync(test_region_, GEOFENCING_STATUS_OK);
 | 
| -  EXPECT_EQ(1, RegistrationCount());
 | 
| -}
 | 
| -
 | 
| -TEST_F(GeofencingServiceTest, UnregisterRegion_AfterRegistration) {
 | 
| -  SetProviderForTests();
 | 
| -  int geofencing_registration_id =
 | 
| -      RegisterRegionSync(test_region_, GEOFENCING_STATUS_OK);
 | 
| -  EXPECT_EQ(1, RegistrationCount());
 | 
| -
 | 
| -  EXPECT_CALL(*provider_, UnregisterRegion(geofencing_registration_id));
 | 
| -  service_->UnregisterRegion(geofencing_registration_id);
 | 
| -  EXPECT_EQ(0, RegistrationCount());
 | 
| -}
 | 
| -
 | 
| -TEST_F(GeofencingServiceTest, UnregisterRegion_DuringSuccesfullRegistration) {
 | 
| -  SetProviderForTests();
 | 
| -  scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner());
 | 
| -
 | 
| -  // The callback that is passed to the provider.
 | 
| -  GeofencingProvider::StatusCallback callback;
 | 
| -
 | 
| -  EXPECT_CALL(
 | 
| -      *provider_,
 | 
| -      RegisterRegion(
 | 
| -          testing::_, WebCircularGeofencingRegionEq(test_region_), testing::_))
 | 
| -      .WillOnce(SaveStatusCallback(&callback));
 | 
| -
 | 
| -  int64_t geofencing_registration_id =
 | 
| -      service_->RegisterRegion(test_region_, &delegate_);
 | 
| -
 | 
| -  // Service should have synchronously called the provider.
 | 
| -  CHECK(!callback.is_null());
 | 
| -
 | 
| -  // Call unregister before registration is finished.
 | 
| -  service_->UnregisterRegion(geofencing_registration_id);
 | 
| -
 | 
| -  // Finish up registration by calling the callback and waiting for the
 | 
| -  // provider to be called. The delegate should not be called in this case.
 | 
| -  EXPECT_CALL(delegate_, RegistrationFinished(testing::_, testing::_)).Times(0);
 | 
| -  EXPECT_CALL(*provider_, UnregisterRegion(geofencing_registration_id))
 | 
| -      .WillOnce(QuitRunner(runner));
 | 
| -  callback.Run(GEOFENCING_STATUS_OK);
 | 
| -  runner->Run();
 | 
| -  EXPECT_EQ(0, RegistrationCount());
 | 
| -}
 | 
| -
 | 
| -}  // namespace content
 | 
| 
 |