| Index: ios/chrome/browser/device_sharing/device_sharing_manager_unittest.mm
|
| diff --git a/ios/chrome/browser/device_sharing/device_sharing_manager_unittest.mm b/ios/chrome/browser/device_sharing/device_sharing_manager_unittest.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9f6da264a5e2fa6563f026addbf3bd7d425f8830
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/device_sharing/device_sharing_manager_unittest.mm
|
| @@ -0,0 +1,116 @@
|
| +// Copyright 2015 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 "ios/chrome/browser/device_sharing/device_sharing_manager.h"
|
| +
|
| +#include <memory>
|
| +
|
| +#include "base/mac/foundation_util.h"
|
| +#include "base/mac/scoped_nsobject.h"
|
| +#include "components/sync_preferences/testing_pref_service_syncable.h"
|
| +#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
|
| +#import "ios/chrome/browser/device_sharing/handoff_manager.h"
|
| +#include "ios/chrome/browser/pref_names.h"
|
| +#include "ios/web/public/test/test_web_thread_bundle.h"
|
| +#include "testing/platform_test.h"
|
| +#import "third_party/ocmock/OCMock/OCMock.h"
|
| +#import "third_party/ocmock/gtest_support.h"
|
| +#include "url/gurl.h"
|
| +
|
| +@interface TestDeviceSharingManager : DeviceSharingManager
|
| ++ (HandoffManager*)createHandoffManager;
|
| +@end
|
| +
|
| +@implementation TestDeviceSharingManager
|
| ++ (HandoffManager*)createHandoffManager {
|
| + return [OCMockObject niceMockForClass:[HandoffManager class]];
|
| +}
|
| +@end
|
| +
|
| +namespace {
|
| +
|
| +class DeviceSharingManagerTest : public PlatformTest {
|
| + protected:
|
| + DeviceSharingManagerTest()
|
| + : PlatformTest(),
|
| + kTestURL1("http://test_sharing_1.html"),
|
| + kTestURL2("http://test_sharing_2.html") {}
|
| +
|
| + void SetUp() override {
|
| + PlatformTest::SetUp();
|
| + TestChromeBrowserState::Builder mainBrowserStateBuilder;
|
| + chrome_browser_state_ = mainBrowserStateBuilder.Build();
|
| + sync_preferences::TestingPrefServiceSyncable* prefs =
|
| + chrome_browser_state_->GetTestingPrefService();
|
| + [HandoffManager registerBrowserStatePrefs:prefs->registry()];
|
| + sharing_manager_.reset([[TestDeviceSharingManager alloc] init]);
|
| + }
|
| +
|
| + void TearDown() override {
|
| + [sharing_manager_ updateBrowserState:NULL];
|
| + sharing_manager_.reset();
|
| + }
|
| +
|
| + const GURL kTestURL1;
|
| + const GURL kTestURL2;
|
| + web::TestWebThreadBundle thread_bundle_;
|
| + std::unique_ptr<TestChromeBrowserState> chrome_browser_state_;
|
| + base::scoped_nsobject<DeviceSharingManager> sharing_manager_;
|
| +};
|
| +
|
| +TEST_F(DeviceSharingManagerTest, NoMainBrowserState) {
|
| + EXPECT_FALSE([sharing_manager_ handoffManager]);
|
| + // Updating the active URL should be a no-op.
|
| + [sharing_manager_ updateActiveURL:GURL("http://test")];
|
| + EXPECT_FALSE([sharing_manager_ handoffManager]);
|
| +}
|
| +
|
| +TEST_F(DeviceSharingManagerTest, ShareOneUrl) {
|
| + [sharing_manager_ updateBrowserState:chrome_browser_state_.get()];
|
| + EXPECT_TRUE([sharing_manager_ handoffManager]);
|
| + OCMockObject* mock_handoff_manager =
|
| + (OCMockObject*)[sharing_manager_ handoffManager];
|
| +
|
| + [[mock_handoff_manager expect] updateActiveURL:kTestURL1];
|
| + [sharing_manager_ updateActiveURL:kTestURL1];
|
| + EXPECT_OCMOCK_VERIFY(mock_handoff_manager);
|
| +}
|
| +
|
| +TEST_F(DeviceSharingManagerTest, ShareTwoUrls) {
|
| + [sharing_manager_ updateBrowserState:chrome_browser_state_.get()];
|
| + EXPECT_TRUE([sharing_manager_ handoffManager]);
|
| + OCMockObject* mock_handoff_manager =
|
| + (OCMockObject*)[sharing_manager_ handoffManager];
|
| +
|
| + [[mock_handoff_manager expect] updateActiveURL:kTestURL1];
|
| + [[mock_handoff_manager expect] updateActiveURL:kTestURL2];
|
| + [sharing_manager_ updateActiveURL:kTestURL1];
|
| + [sharing_manager_ updateActiveURL:kTestURL2];
|
| + EXPECT_OCMOCK_VERIFY(mock_handoff_manager);
|
| +}
|
| +
|
| +TEST_F(DeviceSharingManagerTest, ResetMainBrowserStateAfterShare) {
|
| + [sharing_manager_ updateBrowserState:chrome_browser_state_.get()];
|
| + EXPECT_TRUE([sharing_manager_ handoffManager]);
|
| + OCMockObject* mock_handoff_manager =
|
| + (OCMockObject*)[sharing_manager_ handoffManager];
|
| +
|
| + [[mock_handoff_manager expect] updateActiveURL:kTestURL1];
|
| + [sharing_manager_ updateActiveURL:kTestURL1];
|
| + EXPECT_OCMOCK_VERIFY(mock_handoff_manager);
|
| +
|
| + [sharing_manager_ updateBrowserState:NULL];
|
| + EXPECT_FALSE([sharing_manager_ handoffManager]);
|
| +}
|
| +
|
| +TEST_F(DeviceSharingManagerTest, DisableHandoffViaPrefs) {
|
| + [sharing_manager_ updateBrowserState:chrome_browser_state_.get()];
|
| + EXPECT_TRUE([sharing_manager_ handoffManager]);
|
| + sync_preferences::TestingPrefServiceSyncable* prefs =
|
| + chrome_browser_state_->GetTestingPrefService();
|
| + prefs->SetBoolean(prefs::kIosHandoffToOtherDevices, false);
|
| + EXPECT_FALSE([sharing_manager_ handoffManager]);
|
| +}
|
| +
|
| +} // namespace
|
|
|