1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/chromeos/extensions/file_manager/event_router.h" 6 7 #include "base/prefs/pref_service.h" 8 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_api.h" 9 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_api_factory.h" 10 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/ui/browser.h" 12 #include "chrome/common/pref_names.h" 13 #include "chrome/test/base/in_process_browser_test.h" 14 #include "chromeos/disks/disk_mount_manager.h" 15 #include "chromeos/disks/mock_disk_mount_manager.h" 16 17 using testing::_; 18 using chromeos::disks::DiskMountManager; 19 using chromeos::disks::MockDiskMountManager; 20 21 namespace file_manager { 22 23 class FileManagerEventRouterBrowserTest : public InProcessBrowserTest { 24 public: 25 // ExtensionApiTest override 26 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 27 InProcessBrowserTest::SetUpInProcessBrowserTestFixture(); 28 29 disk_mount_manager_mock_ = new MockDiskMountManager; 30 chromeos::disks::DiskMountManager::InitializeForTesting( 31 disk_mount_manager_mock_); 32 disk_mount_manager_mock_->SetupDefaultReplies(); 33 } 34 35 MockDiskMountManager* disk_mount_manager_mock_; 36 }; 37 38 IN_PROC_BROWSER_TEST_F(FileManagerEventRouterBrowserTest, 39 ExternalStoragePolicyTest) { 40 FileBrowserPrivateAPI* file_browser = 41 FileBrowserPrivateAPIFactory::GetForProfile(browser()->profile()); 42 EventRouter* event_router = 43 file_browser->event_router(); 44 45 DiskMountManager::DiskEvent event = DiskMountManager::DISK_ADDED; 46 // Prepare a fake disk. All that matters here is that the mount point is empty 47 // but the device path is not so that it will exercise the path we care about. 48 DiskMountManager::Disk disk( 49 "fake_path", "", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X", 50 chromeos::DEVICE_TYPE_USB, 1, false, false, true, false, false); 51 52 // First we set the policy to prevent storage mounting and check that the 53 // callback is not called. 54 browser()->profile()->GetPrefs()->SetBoolean(prefs::kExternalStorageDisabled, 55 true); 56 57 EXPECT_CALL(*disk_mount_manager_mock_, MountPath(_, _, _, _)).Times(0); 58 59 event_router->OnDiskEvent(event, &disk); 60 61 // Next we repeat but with the policy not active this time. 62 browser()->profile()->GetPrefs()->SetBoolean(prefs::kExternalStorageDisabled, 63 false); 64 65 EXPECT_CALL(*disk_mount_manager_mock_, 66 MountPath("fake_path", "", "", chromeos::MOUNT_TYPE_DEVICE)) 67 .Times(1); 68 69 event_router->OnDiskEvent(event, &disk); 70 } 71 72 } // namespace file_manager 73