Index: chrome/browser/extensions/extensions_service_unittest.cc |
=================================================================== |
--- chrome/browser/extensions/extensions_service_unittest.cc (revision 40091) |
+++ chrome/browser/extensions/extensions_service_unittest.cc (working copy) |
@@ -7,12 +7,15 @@ |
#include <algorithm> |
#include <vector> |
+#include "base/basictypes.h" |
#include "base/command_line.h" |
#include "base/file_util.h" |
#include "base/json/json_reader.h" |
#include "base/message_loop.h" |
#include "base/path_service.h" |
+#include "base/string16.h" |
#include "base/string_util.h" |
+#include "base/task.h" |
#include "chrome/browser/extensions/crx_installer.h" |
#include "chrome/browser/extensions/extension_creator.h" |
#include "chrome/browser/extensions/extensions_service.h" |
@@ -29,9 +32,13 @@ |
#include "chrome/common/notification_service.h" |
#include "chrome/common/notification_type.h" |
#include "chrome/common/pref_names.h" |
+#include "chrome/common/url_constants.h" |
#include "chrome/test/testing_profile.h" |
+#include "googleurl/src/gurl.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "testing/platform_test.h" |
+#include "webkit/database/database_tracker.h" |
+#include "webkit/database/database_util.h" |
namespace keys = extension_manifest_keys; |
@@ -1633,3 +1640,47 @@ |
loop.RunAllPending(); |
EXPECT_TRUE(recorder.ready()); |
} |
+ |
+// Test loading extensions that require limited and unlimited storage quotas. |
+TEST_F(ExtensionsServiceTest, StorageQuota) { |
+ InitializeEmptyExtensionsService(); |
+ |
+ FilePath extensions_path; |
+ ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &extensions_path)); |
+ extensions_path = extensions_path.AppendASCII("extensions") |
+ .AppendASCII("storage_quota"); |
+ |
+ FilePath limited_quota_ext = extensions_path.AppendASCII("limited_quota") |
+ .AppendASCII("1.0"); |
+ FilePath unlimited_quota_ext = extensions_path.AppendASCII("unlimited_quota") |
+ .AppendASCII("1.0"); |
+ service_->LoadExtension(limited_quota_ext); |
+ service_->LoadExtension(unlimited_quota_ext); |
+ loop_.RunAllPending(); |
+ |
+ EXPECT_EQ(2u, loaded_.size()); |
+ EXPECT_TRUE(profile_.get()); |
+ EXPECT_FALSE(profile_->IsOffTheRecord()); |
+ |
+ // Open a database in each origin to make the tracker aware |
+ // of the existance of these origins and to get their quotas. |
+ int64 limited_quota = -1; |
+ int64 unlimited_quota = -1; |
+ string16 limited_quota_identifier = |
+ webkit_database::DatabaseUtil::GetOriginIdentifier(loaded_[0]->url()); |
+ string16 unlimited_quota_identifier = |
+ webkit_database::DatabaseUtil::GetOriginIdentifier(loaded_[1]->url()); |
+ string16 db_name = UTF8ToUTF16("db"); |
+ string16 description = UTF8ToUTF16("db_description"); |
+ int64 database_size; |
+ webkit_database::DatabaseTracker* db_tracker = profile_->GetDatabaseTracker(); |
+ db_tracker->DatabaseOpened(limited_quota_identifier, db_name, description, |
+ 1, &database_size, &limited_quota); |
+ db_tracker->DatabaseClosed(limited_quota_identifier, db_name); |
+ db_tracker->DatabaseOpened(unlimited_quota_identifier, db_name, description, |
+ 1, &database_size, &unlimited_quota); |
+ db_tracker->DatabaseClosed(unlimited_quota_identifier, db_name); |
+ |
+ EXPECT_EQ(profile_->GetDatabaseTracker()->GetDefaultQuota(), limited_quota); |
+ EXPECT_EQ(kint64max, unlimited_quota); |
+} |