OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
| 5 #include "base/bind.h" |
5 #include "base/command_line.h" | 6 #include "base/command_line.h" |
6 #include "base/file_path.h" | 7 #include "base/file_path.h" |
7 #include "base/file_util.h" | 8 #include "base/file_util.h" |
8 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
9 #include "base/scoped_temp_dir.h" | 10 #include "base/scoped_temp_dir.h" |
10 #include "base/test/thread_test_helper.h" | 11 #include "base/test/thread_test_helper.h" |
11 #include "base/utf_string_conversions.h" | 12 #include "base/utf_string_conversions.h" |
12 #include "chrome/browser/ui/browser.h" | 13 #include "chrome/browser/ui/browser.h" |
13 #include "chrome/test/base/in_process_browser_test.h" | 14 #include "chrome/test/base/in_process_browser_test.h" |
14 #include "chrome/test/base/testing_profile.h" | 15 #include "chrome/test/base/testing_profile.h" |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 class IndexedDBBrowserTestWithLowQuota : public IndexedDBBrowserTest { | 219 class IndexedDBBrowserTestWithLowQuota : public IndexedDBBrowserTest { |
219 public: | 220 public: |
220 virtual void SetUpOnMainThread() { | 221 virtual void SetUpOnMainThread() { |
221 const int kInitialQuotaKilobytes = 5000; | 222 const int kInitialQuotaKilobytes = 5000; |
222 const int kTemporaryStorageQuotaMaxSize = kInitialQuotaKilobytes | 223 const int kTemporaryStorageQuotaMaxSize = kInitialQuotaKilobytes |
223 * 1024 * QuotaManager::kPerHostTemporaryPortion; | 224 * 1024 * QuotaManager::kPerHostTemporaryPortion; |
224 SetTempQuota( | 225 SetTempQuota( |
225 kTemporaryStorageQuotaMaxSize, browser()->profile()->GetQuotaManager()); | 226 kTemporaryStorageQuotaMaxSize, browser()->profile()->GetQuotaManager()); |
226 } | 227 } |
227 | 228 |
228 class SetTempQuotaCallback : public quota::QuotaCallback { | 229 static void DidSetTempQuota(quota::QuotaStatusCode status, |
229 public: | 230 quota::StorageType type, |
230 void Run(quota::QuotaStatusCode, quota::StorageType, int64) { | 231 int64 quota) { |
231 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 232 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
232 } | 233 } |
233 | |
234 void RunWithParams(const Tuple3<quota::QuotaStatusCode, | |
235 quota::StorageType, int64>& params) { | |
236 Run(params.a, params.b, params.c); | |
237 } | |
238 }; | |
239 | 234 |
240 static void SetTempQuota(int64 bytes, scoped_refptr<QuotaManager> qm) { | 235 static void SetTempQuota(int64 bytes, scoped_refptr<QuotaManager> qm) { |
241 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { | 236 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { |
242 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 237 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
243 NewRunnableFunction(&IndexedDBBrowserTestWithLowQuota::SetTempQuota, | 238 NewRunnableFunction(&IndexedDBBrowserTestWithLowQuota::SetTempQuota, |
244 bytes, qm)); | 239 bytes, qm)); |
245 return; | 240 return; |
246 } | 241 } |
247 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 242 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
248 qm->SetTemporaryGlobalQuota(bytes, new SetTempQuotaCallback); | 243 qm->SetTemporaryGlobalQuota( |
| 244 bytes, |
| 245 base::Bind(&IndexedDBBrowserTestWithLowQuota::DidSetTempQuota)); |
249 // Don't return until the quota has been set. | 246 // Don't return until the quota has been set. |
250 scoped_refptr<base::ThreadTestHelper> helper( | 247 scoped_refptr<base::ThreadTestHelper> helper( |
251 new base::ThreadTestHelper( | 248 new base::ThreadTestHelper( |
252 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB))); | 249 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB))); |
253 ASSERT_TRUE(helper->Run()); | 250 ASSERT_TRUE(helper->Run()); |
254 } | 251 } |
255 | 252 |
256 }; | 253 }; |
257 | 254 |
258 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTestWithLowQuota, QuotaTest) { | 255 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTestWithLowQuota, QuotaTest) { |
259 SimpleTest(testUrl(FilePath(FILE_PATH_LITERAL("quota_test.html")))); | 256 SimpleTest(testUrl(FilePath(FILE_PATH_LITERAL("quota_test.html")))); |
260 } | 257 } |
261 | 258 |
262 class IndexedDBBrowserTestWithGCExposed : public IndexedDBBrowserTest { | 259 class IndexedDBBrowserTestWithGCExposed : public IndexedDBBrowserTest { |
263 public: | 260 public: |
264 virtual void SetUpCommandLine(CommandLine* command_line) { | 261 virtual void SetUpCommandLine(CommandLine* command_line) { |
265 command_line->AppendSwitchASCII(switches::kJavaScriptFlags, "--expose-gc"); | 262 command_line->AppendSwitchASCII(switches::kJavaScriptFlags, "--expose-gc"); |
266 } | 263 } |
267 }; | 264 }; |
268 | 265 |
269 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTestWithGCExposed, | 266 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTestWithGCExposed, |
270 DatabaseCallbacksTest) { | 267 DatabaseCallbacksTest) { |
271 SimpleTest( | 268 SimpleTest( |
272 testUrl(FilePath(FILE_PATH_LITERAL("database_callbacks_first.html")))); | 269 testUrl(FilePath(FILE_PATH_LITERAL("database_callbacks_first.html")))); |
273 } | 270 } |
OLD | NEW |