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

Side by Side Diff: chrome/browser/extensions/extension_service_unittest.cc

Issue 9419033: Move creation of BrowserContext objects that live in content to content, instead of depending on th… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Fix memory leaks in tests Created 8 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/extensions/extension_service_unittest.h" 5 #include "chrome/browser/extensions/extension_service_unittest.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 #include "chrome/common/chrome_switches.h" 54 #include "chrome/common/chrome_switches.h"
55 #include "chrome/common/extensions/extension.h" 55 #include "chrome/common/extensions/extension.h"
56 #include "chrome/common/extensions/extension_constants.h" 56 #include "chrome/common/extensions/extension_constants.h"
57 #include "chrome/common/extensions/extension_resource.h" 57 #include "chrome/common/extensions/extension_resource.h"
58 #include "chrome/common/extensions/url_pattern.h" 58 #include "chrome/common/extensions/url_pattern.h"
59 #include "chrome/common/pref_names.h" 59 #include "chrome/common/pref_names.h"
60 #include "chrome/common/string_ordinal.h" 60 #include "chrome/common/string_ordinal.h"
61 #include "chrome/common/url_constants.h" 61 #include "chrome/common/url_constants.h"
62 #include "chrome/test/base/testing_profile.h" 62 #include "chrome/test/base/testing_profile.h"
63 #include "content/browser/appcache/chrome_appcache_service.h" 63 #include "content/browser/appcache/chrome_appcache_service.h"
64 #include "content/browser/file_system/browser_file_system_helper.h"
65 #include "content/browser/in_process_webkit/dom_storage_context.h" 64 #include "content/browser/in_process_webkit/dom_storage_context.h"
66 #include "content/browser/in_process_webkit/webkit_context.h" 65 #include "content/browser/in_process_webkit/webkit_context.h"
67 #include "content/public/browser/notification_registrar.h" 66 #include "content/public/browser/notification_registrar.h"
68 #include "content/public/browser/notification_service.h" 67 #include "content/public/browser/notification_service.h"
69 #include "content/public/browser/plugin_service.h" 68 #include "content/public/browser/plugin_service.h"
69 #include "content/public/common/content_constants.h"
70 #include "content/test/test_browser_thread.h" 70 #include "content/test/test_browser_thread.h"
71 #include "googleurl/src/gurl.h" 71 #include "googleurl/src/gurl.h"
72 #include "grit/browser_resources.h" 72 #include "grit/browser_resources.h"
73 #include "net/base/cookie_monster.h" 73 #include "net/base/cookie_monster.h"
74 #include "net/base/cookie_options.h" 74 #include "net/base/cookie_options.h"
75 #include "net/url_request/url_request_context.h" 75 #include "net/url_request/url_request_context.h"
76 #include "net/url_request/url_request_context_getter.h" 76 #include "net/url_request/url_request_context_getter.h"
77 #include "testing/gtest/include/gtest/gtest.h" 77 #include "testing/gtest/include/gtest/gtest.h"
78 #include "testing/platform_test.h" 78 #include "testing/platform_test.h"
79 #include "webkit/database/database_tracker.h" 79 #include "webkit/database/database_tracker.h"
80 #include "webkit/database/database_util.h" 80 #include "webkit/database/database_util.h"
81 #include "webkit/plugins/npapi/mock_plugin_list.h" 81 #include "webkit/plugins/npapi/mock_plugin_list.h"
82 #include "webkit/quota/quota_manager.h" 82 #include "webkit/quota/quota_manager.h"
83 83
84 using content::BrowserContext;
84 using content::BrowserThread; 85 using content::BrowserThread;
85 using content::PluginService; 86 using content::PluginService;
86 87
87 namespace keys = extension_manifest_keys; 88 namespace keys = extension_manifest_keys;
88 89
89 namespace { 90 namespace {
90 91
91 // Extension ids used during testing. 92 // Extension ids used during testing.
92 const char* const all_zero = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 93 const char* const all_zero = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
93 const char* const zero_n_one = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"; 94 const char* const zero_n_one = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab";
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 class ExtensionTestingProfile : public TestingProfile { 369 class ExtensionTestingProfile : public TestingProfile {
369 public: 370 public:
370 ExtensionTestingProfile() : service_(NULL) { 371 ExtensionTestingProfile() : service_(NULL) {
371 } 372 }
372 373
373 void set_extensions_service(ExtensionService* service) { 374 void set_extensions_service(ExtensionService* service) {
374 service_ = service; 375 service_ = service;
375 } 376 }
376 virtual ExtensionService* GetExtensionService() { return service_; } 377 virtual ExtensionService* GetExtensionService() { return service_; }
377 378
378 virtual ChromeAppCacheService* GetAppCacheService() {
379 if (!appcache_service_) {
380 appcache_service_ = new ChromeAppCacheService(NULL);
381 if (!BrowserThread::PostTask(
382 BrowserThread::IO, FROM_HERE,
383 base::Bind(
384 &ChromeAppCacheService::InitializeOnIOThread,
385 appcache_service_.get(),
386 IsOffTheRecord()
387 ? FilePath() : GetPath().Append(chrome::kAppCacheDirname),
388 GetResourceContext(),
389 make_scoped_refptr(GetExtensionSpecialStoragePolicy()))))
390 NOTREACHED();
391 }
392 return appcache_service_;
393 }
394
395 virtual fileapi::FileSystemContext* GetFileSystemContext() {
396 if (!file_system_context_) {
397 quota::QuotaManager* quota_manager = GetQuotaManager();
398 file_system_context_ = CreateFileSystemContext(
399 GetPath(), IsOffTheRecord(),
400 GetExtensionSpecialStoragePolicy(),
401 quota_manager ? quota_manager->proxy() : NULL);
402 }
403 return file_system_context_;
404 }
405
406 private: 379 private:
407 ExtensionService* service_; 380 ExtensionService* service_;
408 scoped_refptr<ChromeAppCacheService> appcache_service_;
409 scoped_refptr<fileapi::FileSystemContext> file_system_context_;
410 }; 381 };
411 382
412 // Our message loop may be used in tests which require it to be an IO loop. 383 // Our message loop may be used in tests which require it to be an IO loop.
413 ExtensionServiceTestBase::ExtensionServiceTestBase() 384 ExtensionServiceTestBase::ExtensionServiceTestBase()
414 : loop_(MessageLoop::TYPE_IO), 385 : loop_(MessageLoop::TYPE_IO),
415 service_(NULL), 386 service_(NULL),
416 expected_extensions_count_(0), 387 expected_extensions_count_(0),
417 ui_thread_(BrowserThread::UI, &loop_), 388 ui_thread_(BrowserThread::UI, &loop_),
418 db_thread_(BrowserThread::DB, &loop_), 389 db_thread_(BrowserThread::DB, &loop_),
419 webkit_thread_(BrowserThread::WEBKIT_DEPRECATED, &loop_), 390 webkit_thread_(BrowserThread::WEBKIT_DEPRECATED, &loop_),
(...skipping 2677 matching lines...) Expand 10 before | Expand all | Expand 10 after
3097 EXPECT_TRUE(callback.result_); 3068 EXPECT_TRUE(callback.result_);
3098 3069
3099 cookie_monster->GetAllCookiesForURLAsync( 3070 cookie_monster->GetAllCookiesForURLAsync(
3100 ext_url, 3071 ext_url,
3101 base::Bind(&ExtensionCookieCallback::GetAllCookiesCallback, 3072 base::Bind(&ExtensionCookieCallback::GetAllCookiesCallback,
3102 base::Unretained(&callback))); 3073 base::Unretained(&callback)));
3103 loop_.RunAllPending(); 3074 loop_.RunAllPending();
3104 EXPECT_EQ(1U, callback.list_.size()); 3075 EXPECT_EQ(1U, callback.list_.size());
3105 3076
3106 // Open a database. 3077 // Open a database.
3107 webkit_database::DatabaseTracker* db_tracker = profile_->GetDatabaseTracker(); 3078 webkit_database::DatabaseTracker* db_tracker =
3079 BrowserContext::GetDatabaseTracker(profile_.get());
3108 string16 db_name = UTF8ToUTF16("db"); 3080 string16 db_name = UTF8ToUTF16("db");
3109 string16 description = UTF8ToUTF16("db_description"); 3081 string16 description = UTF8ToUTF16("db_description");
3110 int64 size; 3082 int64 size;
3111 db_tracker->DatabaseOpened(origin_id, db_name, description, 1, &size); 3083 db_tracker->DatabaseOpened(origin_id, db_name, description, 1, &size);
3112 db_tracker->DatabaseClosed(origin_id, db_name); 3084 db_tracker->DatabaseClosed(origin_id, db_name);
3113 std::vector<webkit_database::OriginInfo> origins; 3085 std::vector<webkit_database::OriginInfo> origins;
3114 db_tracker->GetAllOriginsInfo(&origins); 3086 db_tracker->GetAllOriginsInfo(&origins);
3115 EXPECT_EQ(1U, origins.size()); 3087 EXPECT_EQ(1U, origins.size());
3116 EXPECT_EQ(origin_id, origins[0].GetOrigin()); 3088 EXPECT_EQ(origin_id, origins[0].GetOrigin());
3117 3089
3118 // Create local storage. We only simulate this by creating the backing file 3090 // Create local storage. We only simulate this by creating the backing file
3119 // since webkit is not initialized. 3091 // since webkit is not initialized.
3120 DOMStorageContext* context = 3092 DOMStorageContext* context =
3121 profile_->GetWebKitContext()->dom_storage_context(); 3093 BrowserContext::GetWebKitContext(profile_.get())->dom_storage_context();
3122 FilePath lso_path = context->GetLocalStorageFilePath(origin_id); 3094 FilePath lso_path = context->GetLocalStorageFilePath(origin_id);
3123 EXPECT_TRUE(file_util::CreateDirectory(lso_path.DirName())); 3095 EXPECT_TRUE(file_util::CreateDirectory(lso_path.DirName()));
3124 EXPECT_EQ(0, file_util::WriteFile(lso_path, NULL, 0)); 3096 EXPECT_EQ(0, file_util::WriteFile(lso_path, NULL, 0));
3125 EXPECT_TRUE(file_util::PathExists(lso_path)); 3097 EXPECT_TRUE(file_util::PathExists(lso_path));
3126 3098
3127 // Create indexed db. Similarly, it is enough to only simulate this by 3099 // Create indexed db. Similarly, it is enough to only simulate this by
3128 // creating the directory on the disk. 3100 // creating the directory on the disk.
3129 IndexedDBContext* idb_context = 3101 IndexedDBContext* idb_context =
3130 profile_->GetWebKitContext()->indexed_db_context(); 3102 BrowserContext::GetWebKitContext(profile_.get())->indexed_db_context();
3131 FilePath idb_path = idb_context->GetIndexedDBFilePath(origin_id); 3103 FilePath idb_path = idb_context->GetIndexedDBFilePath(origin_id);
3132 EXPECT_TRUE(file_util::CreateDirectory(idb_path)); 3104 EXPECT_TRUE(file_util::CreateDirectory(idb_path));
3133 EXPECT_TRUE(file_util::DirectoryExists(idb_path)); 3105 EXPECT_TRUE(file_util::DirectoryExists(idb_path));
3134 3106
3135 // Uninstall the extension. 3107 // Uninstall the extension.
3136 service_->UninstallExtension(good_crx, false, NULL); 3108 service_->UninstallExtension(good_crx, false, NULL);
3137 loop_.RunAllPending(); 3109 loop_.RunAllPending();
3138 3110
3139 // Check that the cookie is gone. 3111 // Check that the cookie is gone.
3140 cookie_monster->GetAllCookiesForURLAsync( 3112 cookie_monster->GetAllCookiesForURLAsync(
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
3206 EXPECT_TRUE(callback.result_); 3178 EXPECT_TRUE(callback.result_);
3207 3179
3208 cookie_monster->GetAllCookiesForURLAsync( 3180 cookie_monster->GetAllCookiesForURLAsync(
3209 origin1, 3181 origin1,
3210 base::Bind(&ExtensionCookieCallback::GetAllCookiesCallback, 3182 base::Bind(&ExtensionCookieCallback::GetAllCookiesCallback,
3211 base::Unretained(&callback))); 3183 base::Unretained(&callback)));
3212 loop_.RunAllPending(); 3184 loop_.RunAllPending();
3213 EXPECT_EQ(1U, callback.list_.size()); 3185 EXPECT_EQ(1U, callback.list_.size());
3214 3186
3215 // Open a database. 3187 // Open a database.
3216 webkit_database::DatabaseTracker* db_tracker = profile_->GetDatabaseTracker(); 3188 webkit_database::DatabaseTracker* db_tracker =
3189 BrowserContext::GetDatabaseTracker(profile_.get());
3217 string16 db_name = UTF8ToUTF16("db"); 3190 string16 db_name = UTF8ToUTF16("db");
3218 string16 description = UTF8ToUTF16("db_description"); 3191 string16 description = UTF8ToUTF16("db_description");
3219 int64 size; 3192 int64 size;
3220 db_tracker->DatabaseOpened(origin_id, db_name, description, 1, &size); 3193 db_tracker->DatabaseOpened(origin_id, db_name, description, 1, &size);
3221 db_tracker->DatabaseClosed(origin_id, db_name); 3194 db_tracker->DatabaseClosed(origin_id, db_name);
3222 std::vector<webkit_database::OriginInfo> origins; 3195 std::vector<webkit_database::OriginInfo> origins;
3223 db_tracker->GetAllOriginsInfo(&origins); 3196 db_tracker->GetAllOriginsInfo(&origins);
3224 EXPECT_EQ(1U, origins.size()); 3197 EXPECT_EQ(1U, origins.size());
3225 EXPECT_EQ(origin_id, origins[0].GetOrigin()); 3198 EXPECT_EQ(origin_id, origins[0].GetOrigin());
3226 3199
3227 // Create local storage. We only simulate this by creating the backing file 3200 // Create local storage. We only simulate this by creating the backing file
3228 // since webkit is not initialized. 3201 // since webkit is not initialized.
3229 DOMStorageContext* context = 3202 DOMStorageContext* context =
3230 profile_->GetWebKitContext()->dom_storage_context(); 3203 BrowserContext::GetWebKitContext(profile_.get())->dom_storage_context();
3231 FilePath lso_path = context->GetLocalStorageFilePath(origin_id); 3204 FilePath lso_path = context->GetLocalStorageFilePath(origin_id);
3232 EXPECT_TRUE(file_util::CreateDirectory(lso_path.DirName())); 3205 EXPECT_TRUE(file_util::CreateDirectory(lso_path.DirName()));
3233 EXPECT_EQ(0, file_util::WriteFile(lso_path, NULL, 0)); 3206 EXPECT_EQ(0, file_util::WriteFile(lso_path, NULL, 0));
3234 EXPECT_TRUE(file_util::PathExists(lso_path)); 3207 EXPECT_TRUE(file_util::PathExists(lso_path));
3235 3208
3236 // Create indexed db. Similarly, it is enough to only simulate this by 3209 // Create indexed db. Similarly, it is enough to only simulate this by
3237 // creating the directory on the disk. 3210 // creating the directory on the disk.
3238 IndexedDBContext* idb_context = 3211 IndexedDBContext* idb_context =
3239 profile_->GetWebKitContext()->indexed_db_context(); 3212 BrowserContext::GetWebKitContext(profile_.get())->indexed_db_context();
3240 FilePath idb_path = idb_context->GetIndexedDBFilePath(origin_id); 3213 FilePath idb_path = idb_context->GetIndexedDBFilePath(origin_id);
3241 EXPECT_TRUE(file_util::CreateDirectory(idb_path)); 3214 EXPECT_TRUE(file_util::CreateDirectory(idb_path));
3242 EXPECT_TRUE(file_util::DirectoryExists(idb_path)); 3215 EXPECT_TRUE(file_util::DirectoryExists(idb_path));
3243 3216
3244 // Uninstall one of them, unlimited storage should still be granted 3217 // Uninstall one of them, unlimited storage should still be granted
3245 // to the origin. 3218 // to the origin.
3246 UninstallExtension(id1, false); 3219 UninstallExtension(id1, false);
3247 EXPECT_EQ(1u, service_->extensions()->size()); 3220 EXPECT_EQ(1u, service_->extensions()->size());
3248 EXPECT_TRUE(profile_->GetExtensionSpecialStoragePolicy()-> 3221 EXPECT_TRUE(profile_->GetExtensionSpecialStoragePolicy()->
3249 IsStorageUnlimited(origin1)); 3222 IsStorageUnlimited(origin1));
(...skipping 1559 matching lines...) Expand 10 before | Expand all | Expand 10 after
4809 ASSERT_FALSE(AddPendingSyncInstall()); 4782 ASSERT_FALSE(AddPendingSyncInstall());
4810 4783
4811 // Wait for the external source to install. 4784 // Wait for the external source to install.
4812 WaitForCrxInstall(crx_path_, INSTALL_NEW); 4785 WaitForCrxInstall(crx_path_, INSTALL_NEW);
4813 ASSERT_TRUE(IsCrxInstalled()); 4786 ASSERT_TRUE(IsCrxInstalled());
4814 4787
4815 // Now that the extension is installed, sync request should fail 4788 // Now that the extension is installed, sync request should fail
4816 // because the extension is already installed. 4789 // because the extension is already installed.
4817 ASSERT_FALSE(AddPendingSyncInstall()); 4790 ASSERT_FALSE(AddPendingSyncInstall());
4818 } 4791 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/browser/extensions/file_manager_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698