OLD | NEW |
| (Empty) |
1 // Copyright (c) 2010 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 "webkit/fileapi/file_system_quota_manager.h" | |
6 | |
7 #include "base/basictypes.h" | |
8 #include "base/logging.h" | |
9 #include "base/scoped_ptr.h" | |
10 #include "base/string_number_conversions.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | |
12 #include "webkit/quota/special_storage_policy.h" | |
13 | |
14 using namespace fileapi; | |
15 | |
16 namespace { | |
17 | |
18 static const char* const kTestOrigins[] = { | |
19 "https://a.com/", | |
20 "http://b.com/", | |
21 "http://c.com:1/", | |
22 "file:///", | |
23 }; | |
24 | |
25 class TestSpecialStoragePolicy : public quota::SpecialStoragePolicy { | |
26 public: | |
27 virtual bool IsStorageProtected(const GURL& origin) { | |
28 return false; | |
29 } | |
30 | |
31 virtual bool IsStorageUnlimited(const GURL& origin) { | |
32 return origin == GURL(kTestOrigins[1]); | |
33 } | |
34 }; | |
35 | |
36 } // anonymous namespace | |
37 | |
38 TEST(FileSystemQuotaManagerTest, CheckNotAllowed) { | |
39 FileSystemQuotaManager quota(false, false, NULL); | |
40 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestOrigins); ++i) { | |
41 SCOPED_TRACE(testing::Message() << "CheckOriginQuotaNotAllowed #" | |
42 << i << " " << kTestOrigins[i]); | |
43 // Should fail no matter how much size is requested. | |
44 GURL origin(kTestOrigins[i]); | |
45 EXPECT_FALSE(quota.CheckOriginQuota(origin, -1)); | |
46 EXPECT_FALSE(quota.CheckOriginQuota(origin, 0)); | |
47 EXPECT_FALSE(quota.CheckOriginQuota(origin, 100)); | |
48 } | |
49 } | |
50 | |
51 TEST(FileSystemQuotaManagerTest, CheckUnlimitedFlag) { | |
52 FileSystemQuotaManager quota(false, true, NULL); | |
53 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestOrigins); ++i) { | |
54 SCOPED_TRACE(testing::Message() << "CheckOriginQuotaNotAllowed #" | |
55 << i << " " << kTestOrigins[i]); | |
56 // Should succeed no matter how much size is requested. | |
57 GURL origin(kTestOrigins[i]); | |
58 EXPECT_TRUE(quota.CheckOriginQuota(origin, -1)); | |
59 EXPECT_TRUE(quota.CheckOriginQuota(origin, 0)); | |
60 EXPECT_TRUE(quota.CheckOriginQuota(origin, 100)); | |
61 } | |
62 } | |
63 | |
64 TEST(FileSystemQuotaManagerTest, CheckAllowFileFlag) { | |
65 FileSystemQuotaManager quota(true, false, NULL); | |
66 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestOrigins); ++i) { | |
67 SCOPED_TRACE(testing::Message() << "CheckOriginQuotaNotAllowed #" | |
68 << i << " " << kTestOrigins[i]); | |
69 // Should succeed only for file:// urls | |
70 GURL origin(kTestOrigins[i]); | |
71 if (origin.SchemeIsFile()) { | |
72 EXPECT_TRUE(quota.CheckOriginQuota(origin, -1)); | |
73 EXPECT_TRUE(quota.CheckOriginQuota(origin, 0)); | |
74 EXPECT_TRUE(quota.CheckOriginQuota(origin, 100)); | |
75 } else { | |
76 EXPECT_FALSE(quota.CheckOriginQuota(origin, -1)); | |
77 EXPECT_FALSE(quota.CheckOriginQuota(origin, 0)); | |
78 EXPECT_FALSE(quota.CheckOriginQuota(origin, 100)); | |
79 } | |
80 } | |
81 } | |
82 | |
83 TEST(FileSystemQuotaManagerTest, CheckSpecialPolicy) { | |
84 scoped_refptr<TestSpecialStoragePolicy> policy(new TestSpecialStoragePolicy); | |
85 | |
86 FileSystemQuotaManager quota(false, false, policy); | |
87 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestOrigins); ++i) { | |
88 SCOPED_TRACE(testing::Message() << "CheckOriginQuotaNotAllowed #" | |
89 << i << " " << kTestOrigins[i]); | |
90 // Should succeed only for unlimited origins according to the policy. | |
91 GURL origin(kTestOrigins[i]); | |
92 if (policy->IsStorageUnlimited(origin)) { | |
93 EXPECT_TRUE(quota.CheckOriginQuota(origin, -1)); | |
94 EXPECT_TRUE(quota.CheckOriginQuota(origin, 0)); | |
95 EXPECT_TRUE(quota.CheckOriginQuota(origin, 100)); | |
96 } else { | |
97 EXPECT_FALSE(quota.CheckOriginQuota(origin, -1)); | |
98 EXPECT_FALSE(quota.CheckOriginQuota(origin, 0)); | |
99 EXPECT_FALSE(quota.CheckOriginQuota(origin, 100)); | |
100 } | |
101 } | |
102 } | |
OLD | NEW |