1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <set> 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_util.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/message_loop/message_loop_proxy.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "webkit/browser/quota/mock_quota_manager.h" 16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "webkit/browser/quota/mock_special_storage_policy.h" 17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "webkit/browser/quota/mock_storage_client.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace quota { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kTestOrigin1[] = "http://host1:1/"; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kTestOrigin2[] = "http://host2:1/"; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kTestOrigin3[] = "http://host3:1/"; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const GURL kOrigin1(kTestOrigin1); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const GURL kOrigin2(kTestOrigin2); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const GURL kOrigin3(kTestOrigin3); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const StorageType kTemporary = kStorageTypeTemporary; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const StorageType kPersistent = kStorageTypePersistent; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const QuotaClient::ID kClientFile = QuotaClient::kFileSystem; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const QuotaClient::ID kClientDB = QuotaClient::kIndexedDatabase; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockQuotaManagerTest : public testing::Test { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockQuotaManagerTest() 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : weak_factory_(this), 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) deletion_callback_count_(0) { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetUp() { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(data_dir_.CreateUniqueTempDir()); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) policy_ = new MockSpecialStoragePolicy; 45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) manager_ = new MockQuotaManager(false /* is_incognito */, 46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) data_dir_.path(), 477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::MessageLoopProxy::current().get(), 487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::MessageLoopProxy::current().get(), 49868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) policy_.get()); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void TearDown() { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure the quota manager cleans up correctly. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager_ = NULL; 55b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetModifiedOrigins(StorageType type, base::Time since) { 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager_->GetOriginsModifiedSince( 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type, since, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&MockQuotaManagerTest::GotModifiedOrigins, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak_factory_.GetWeakPtr())); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GotModifiedOrigins(const std::set<GURL>& origins, StorageType type) { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) origins_ = origins; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) type_ = type; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DeleteOriginData(const GURL& origin, StorageType type, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int quota_client_mask) { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager_->DeleteOriginData( 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) origin, type, quota_client_mask, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&MockQuotaManagerTest::DeletedOriginData, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak_factory_.GetWeakPtr())); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DeletedOriginData(QuotaStatusCode status) { 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ++deletion_callback_count_; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(quota::kQuotaStatusOk, status); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int deletion_callback_count() const { 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return deletion_callback_count_; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockQuotaManager* manager() const { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return manager_.get(); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::set<GURL>& origins() const { 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return origins_; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const StorageType& type() const { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return type_; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 100b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop message_loop_; 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ScopedTempDir data_dir_; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::WeakPtrFactory<MockQuotaManagerTest> weak_factory_; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<MockQuotaManager> manager_; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<MockSpecialStoragePolicy> policy_; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int deletion_callback_count_; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<GURL> origins_; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StorageType type_; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MockQuotaManagerTest); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MockQuotaManagerTest, BasicOriginManipulation) { 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile)); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kTemporary, kClientDB)); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientFile)); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientDB)); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile)); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB)); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientFile)); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientDB)); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager()->AddOrigin(kOrigin1, kTemporary, kClientFile, base::Time::Now()); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile)); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kTemporary, kClientDB)); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientFile)); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientDB)); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile)); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB)); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientFile)); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientDB)); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager()->AddOrigin(kOrigin1, kPersistent, kClientFile, base::Time::Now()); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile)); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kTemporary, kClientDB)); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kPersistent, kClientFile)); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientDB)); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile)); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB)); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientFile)); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientDB)); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager()->AddOrigin(kOrigin2, kTemporary, kClientFile | kClientDB, 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time::Now()); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile)); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kTemporary, kClientDB)); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kPersistent, kClientFile)); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientDB)); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile)); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB)); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientFile)); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientDB)); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MockQuotaManagerTest, OriginDeletion) { 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager()->AddOrigin(kOrigin1, kTemporary, kClientFile, base::Time::Now()); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager()->AddOrigin(kOrigin2, kTemporary, kClientFile | kClientDB, 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time::Now()); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager()->AddOrigin(kOrigin3, kTemporary, kClientFile | kClientDB, 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time::Now()); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DeleteOriginData(kOrigin2, kTemporary, kClientFile); 164b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1, deletion_callback_count()); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile)); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile)); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB)); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin3, kTemporary, kClientFile)); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin3, kTemporary, kClientDB)); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DeleteOriginData(kOrigin3, kTemporary, kClientFile | kClientDB); 174b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(2, deletion_callback_count()); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile)); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile)); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB)); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin3, kTemporary, kClientFile)); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(manager()->OriginHasData(kOrigin3, kTemporary, kClientDB)); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(MockQuotaManagerTest, ModifiedOrigins) { 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time now = base::Time::Now(); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time then = base::Time(); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::TimeDelta an_hour = base::TimeDelta::FromMilliseconds(3600000); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::TimeDelta a_minute = base::TimeDelta::FromMilliseconds(60000); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetModifiedOrigins(kTemporary, then); 191b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(origins().empty()); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager()->AddOrigin(kOrigin1, kTemporary, kClientFile, now - an_hour); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetModifiedOrigins(kTemporary, then); 197b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(kTemporary, type()); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1UL, origins().size()); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1UL, origins().count(kOrigin1)); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0UL, origins().count(kOrigin2)); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) manager()->AddOrigin(kOrigin2, kTemporary, kClientFile, now); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetModifiedOrigins(kTemporary, then); 207b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(kTemporary, type()); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(2UL, origins().size()); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1UL, origins().count(kOrigin1)); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1UL, origins().count(kOrigin2)); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetModifiedOrigins(kTemporary, now - a_minute); 215b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoop::current()->RunUntilIdle(); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(kTemporary, type()); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1UL, origins().size()); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0UL, origins().count(kOrigin1)); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1UL, origins().count(kOrigin2)); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // Namespace quota 223