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

Unified Diff: chrome/browser/extensions/api/system_info_storage/storage_info_provider_unittest.cc

Issue 18578008: [SystemInfo API] Move Storage API out of experimental namespace and rename to the "system" namespace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix PermissionTest unittest. Created 7 years, 5 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: chrome/browser/extensions/api/system_info_storage/storage_info_provider_unittest.cc
diff --git a/chrome/browser/extensions/api/system_info_storage/storage_info_provider_unittest.cc b/chrome/browser/extensions/api/system_info_storage/storage_info_provider_unittest.cc
deleted file mode 100644
index 9f628a21f9271df5bb267a7ee5e6962f3aa15901..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/api/system_info_storage/storage_info_provider_unittest.cc
+++ /dev/null
@@ -1,272 +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.
-
-// StorageInfoProvider unit tests.
-
-#include "base/message_loop/message_loop.h"
-#include "base/stl_util.h"
-#include "chrome/browser/extensions/api/system_info_storage/storage_info_provider.h"
-#include "chrome/browser/extensions/api/system_info_storage/test_storage_info_provider.h"
-#include "chrome/browser/storage_monitor/test_storage_monitor.h"
-#include "content/public/test/test_browser_thread.h"
-#include "content/public/test/test_utils.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace extensions {
-
-using api::experimental_system_info_storage::ParseStorageUnitType;
-using api::experimental_system_info_storage::StorageUnitInfo;
-using api::experimental_system_info_storage::StorageUnitType;
-using base::MessageLoop;
-using chrome::test::TestStorageMonitor;
-using content::BrowserThread;
-using content::RunAllPendingInMessageLoop;
-using content::RunMessageLoop;
-using testing::Return;
-using testing::_;
-
-const struct TestStorageUnitInfo kTestingData[] = {
- {"device:001", "transient:01", "C:", systeminfo::kStorageTypeUnknown,
- 1000, 10, 0},
- {"device:002", "transient:02", "d:", systeminfo::kStorageTypeRemovable,
- 2000, 10, 1},
- {"device:003", "transient:03", "/home", systeminfo::kStorageTypeFixed,
- 3000, 10, 2},
- {"device:004", "transient:04", "/", systeminfo::kStorageTypeRemovable,
- 4000, 10, 3}
-};
-
-// The watching interval for unit test is 1 milliseconds.
-const size_t kWatchingIntervalMs = 1u;
-// The number of times of checking watched storages.
-const int kCheckTimes = 10;
-
-class MockStorageObserver : public StorageFreeSpaceObserver {
- public:
- MockStorageObserver() {}
- virtual ~MockStorageObserver() {}
-
- MOCK_METHOD3(OnFreeSpaceChanged, void(const std::string&,
- double, double));
-
- private:
- DISALLOW_COPY_AND_ASSIGN(MockStorageObserver);
-};
-
-const int kMaxCheckWatchStorageTimes = 10;
-
-// A testing observer used to provide the statistics of how many times
-// that the storage free space has been changed and check the change against
-// our expectation.
-class TestStorageObserver : public StorageFreeSpaceObserver {
- public:
- TestStorageObserver() : change_times_(0) {
- for (size_t i = 0; i < arraysize(kTestingData); ++i)
- testing_data_.push_back(kTestingData[i]);
- }
-
- virtual ~TestStorageObserver() {}
-
- virtual void OnFreeSpaceChanged(const std::string& transient_id,
- double old_value,
- double new_value) OVERRIDE {
- // The observer is added on UI thread, so the callback should be also
- // called on UI thread.
- ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI));
- size_t i = 0;
- for (; i < testing_data_.size(); ++i) {
- if (testing_data_[i].transient_id == transient_id) {
- EXPECT_DOUBLE_EQ(new_value-old_value, testing_data_[i].change_step);
- ++change_times_;
- break;
- }
- }
-
- ASSERT_TRUE(i != testing_data_.size());
- }
-
- private:
- // A copy of |kTestingData|.
- std::vector<TestStorageUnitInfo> testing_data_;
- int change_times_;
-};
-
-class UnitTestStorageInfoProvider : public TestStorageInfoProvider {
- public :
- UnitTestStorageInfoProvider(const struct TestStorageUnitInfo* testing_data,
- size_t n)
- : TestStorageInfoProvider(testing_data, n),
- check_watch_storage_times_(0) {}
-
- protected:
- virtual ~UnitTestStorageInfoProvider() {}
-
- private:
- virtual int64 GetStorageFreeSpaceFromTransientId(
- const std::string& transient_id) OVERRIDE {
- int64 available_capacity = -1;
- for (size_t i = 0; i < testing_data_.size(); ++i) {
- if (testing_data_[i].transient_id == transient_id) {
- available_capacity = testing_data_[i].available_capacity;
- // We simulate free space change by increasing the |available_capacity|
- // with a fixed change step.
- testing_data_[i].available_capacity += testing_data_[i].change_step;
-
- // Add up the counting variable.
- ++check_watch_storage_times_;
-
- // Post a quit task to UI thread for test result verification
- // if |check_watch_storage_times_| is greater than the threshold value
- // |kMaxCheckWatchStorageTimes|.
- if (check_watch_storage_times_ > kMaxCheckWatchStorageTimes) {
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- MessageLoop::QuitClosure());
- check_watch_storage_times_ = 0;
- }
-
- break;
- }
- }
- return available_capacity;
- }
-
- int check_watch_storage_times_;
-};
-
-class StorageInfoProviderTest : public testing::Test {
- public:
- StorageInfoProviderTest();
- virtual ~StorageInfoProviderTest();
-
- protected:
- virtual void SetUp() OVERRIDE;
- virtual void TearDown() OVERRIDE;
-
- // Run message loop and flush blocking pool to make sure there is no pending
- // tasks on blocking pool.
- static void RunLoopAndFlushBlockingPool();
- static void RunAllPendingAndFlushBlockingPool();
-
- base::MessageLoop message_loop_;
- content::TestBrowserThread ui_thread_;
- scoped_refptr<UnitTestStorageInfoProvider> storage_info_provider_;
- scoped_ptr<TestStorageMonitor> storage_test_notifications_;
-};
-
-StorageInfoProviderTest::StorageInfoProviderTest()
- : message_loop_(base::MessageLoop::TYPE_UI),
- ui_thread_(BrowserThread::UI, &message_loop_) {
-}
-
-StorageInfoProviderTest::~StorageInfoProviderTest() {
-}
-
-void StorageInfoProviderTest::SetUp() {
- ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI));
- storage_test_notifications_.reset(new TestStorageMonitor);
- storage_info_provider_ = new UnitTestStorageInfoProvider(
- kTestingData, arraysize(kTestingData));
-}
-
-void StorageInfoProviderTest::TearDown() {
- RunAllPendingAndFlushBlockingPool();
-}
-
-void StorageInfoProviderTest::RunLoopAndFlushBlockingPool() {
- RunMessageLoop();
- content::BrowserThread::GetBlockingPool()->FlushForTesting();
-}
-
-void StorageInfoProviderTest::RunAllPendingAndFlushBlockingPool() {
- RunAllPendingInMessageLoop();
- content::BrowserThread::GetBlockingPool()->FlushForTesting();
-}
-
-TEST_F(StorageInfoProviderTest, WatchingNoChangedStorage) {
- // Case 1: watching a storage that the free space is not changed.
- MockStorageObserver observer;
- storage_info_provider_->AddObserver(&observer);
- storage_info_provider_->StartWatching(kTestingData[0].transient_id);
- EXPECT_CALL(observer, OnFreeSpaceChanged(kTestingData[0].transient_id, _, _))
- .Times(0);
-
- RunLoopAndFlushBlockingPool();
-
- storage_info_provider_->RemoveObserver(&observer);
- storage_info_provider_->StopWatching(kTestingData[0].device_id);
- RunAllPendingAndFlushBlockingPool();
-}
-
-TEST_F(StorageInfoProviderTest, WatchingOneStorage) {
- // Case 2: only watching one storage.
- TestStorageObserver observer;
- storage_info_provider_->AddObserver(&observer);
- storage_info_provider_->StartWatching(kTestingData[1].transient_id);
- RunLoopAndFlushBlockingPool();
-
- storage_info_provider_->StopWatching(kTestingData[1].transient_id);
- // Give a chance to run StopWatching task on the blocking pool.
- RunAllPendingAndFlushBlockingPool();
-
- MockStorageObserver mock_observer;
- storage_info_provider_->AddObserver(&mock_observer);
- // The watched storage won't get free space change notification.
- EXPECT_CALL(mock_observer,
- OnFreeSpaceChanged(kTestingData[1].transient_id, _, _)).Times(0);
- RunAllPendingAndFlushBlockingPool();
-
- storage_info_provider_->RemoveObserver(&observer);
- storage_info_provider_->RemoveObserver(&mock_observer);
-}
-
-TEST_F(StorageInfoProviderTest, WatchingMultipleStorages) {
- // Case 2: watching multiple storages. We ignore the first entry in
- // |kTestingData| since its change_step is zero.
- TestStorageObserver observer;
- storage_info_provider_->AddObserver(&observer);
-
- for (size_t k = 1; k < arraysize(kTestingData); ++k) {
- storage_info_provider_->StartWatching(kTestingData[k].transient_id);
- }
- RunLoopAndFlushBlockingPool();
-
- // Stop watching the first storage.
- storage_info_provider_->StopWatching(kTestingData[1].transient_id);
- RunAllPendingAndFlushBlockingPool();
-
- MockStorageObserver mock_observer;
- storage_info_provider_->AddObserver(&mock_observer);
- for (size_t k = 2; k < arraysize(kTestingData); ++k) {
- EXPECT_CALL(mock_observer,
- OnFreeSpaceChanged(kTestingData[k].transient_id, _, _))
- .WillRepeatedly(Return());
- }
-
- // After stopping watching, the observer won't get change notification.
- EXPECT_CALL(mock_observer,
- OnFreeSpaceChanged(kTestingData[1].transient_id, _, _)).Times(0);
- RunLoopAndFlushBlockingPool();
-
- for (size_t k = 1; k < arraysize(kTestingData); ++k) {
- storage_info_provider_->StopWatching(kTestingData[k].transient_id);
- }
- RunAllPendingAndFlushBlockingPool();
- storage_info_provider_->RemoveObserver(&observer);
- storage_info_provider_->RemoveObserver(&mock_observer);
-}
-
-TEST_F(StorageInfoProviderTest, WatchingInvalidStorage) {
- // Case 3: watching an invalid storage.
- std::string invalid_id("invalid_id");
- MockStorageObserver mock_observer;
- storage_info_provider_->AddObserver(&mock_observer);
- storage_info_provider_->StartWatching(invalid_id);
- EXPECT_CALL(mock_observer,
- OnFreeSpaceChanged(invalid_id, _, _)).Times(0);
- RunAllPendingAndFlushBlockingPool();
- storage_info_provider_->RemoveObserver(&mock_observer);
-}
-
-} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698