blob: b3b7e9e841f059631d4aeab1121e8eec9d7a2226 [file] [log] [blame]
// Copyright (c) 2013 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 "chrome/browser/chromeos/extensions/file_manager/event_router.h"
#include "base/prefs/pref_service.h"
#include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_api.h"
#include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_api_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chromeos/disks/disk_mount_manager.h"
#include "chromeos/disks/mock_disk_mount_manager.h"
using testing::_;
using chromeos::disks::DiskMountManager;
using chromeos::disks::MockDiskMountManager;
namespace file_manager {
class FileManagerEventRouterBrowserTest : public InProcessBrowserTest {
public:
// ExtensionApiTest override
virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
InProcessBrowserTest::SetUpInProcessBrowserTestFixture();
disk_mount_manager_mock_ = new MockDiskMountManager;
chromeos::disks::DiskMountManager::InitializeForTesting(
disk_mount_manager_mock_);
disk_mount_manager_mock_->SetupDefaultReplies();
}
MockDiskMountManager* disk_mount_manager_mock_;
};
IN_PROC_BROWSER_TEST_F(FileManagerEventRouterBrowserTest,
ExternalStoragePolicyTest) {
FileBrowserPrivateAPI* file_browser =
FileBrowserPrivateAPIFactory::GetForProfile(browser()->profile());
EventRouter* event_router =
file_browser->event_router();
DiskMountManager::DiskEvent event = DiskMountManager::DISK_ADDED;
// Prepare a fake disk. All that matters here is that the mount point is empty
// but the device path is not so that it will exercise the path we care about.
DiskMountManager::Disk disk(
"fake_path", "", "X", "X", "X", "X", "X", "X", "X", "X", "X", "X",
chromeos::DEVICE_TYPE_USB, 1, false, false, true, false, false);
// First we set the policy to prevent storage mounting and check that the
// callback is not called.
browser()->profile()->GetPrefs()->SetBoolean(prefs::kExternalStorageDisabled,
true);
EXPECT_CALL(*disk_mount_manager_mock_, MountPath(_, _, _, _)).Times(0);
event_router->OnDiskEvent(event, &disk);
// Next we repeat but with the policy not active this time.
browser()->profile()->GetPrefs()->SetBoolean(prefs::kExternalStorageDisabled,
false);
EXPECT_CALL(*disk_mount_manager_mock_,
MountPath("fake_path", "", "", chromeos::MOUNT_TYPE_DEVICE))
.Times(1);
event_router->OnDiskEvent(event, &disk);
}
} // namespace file_manager