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

Side by Side Diff: chrome/browser/background/background_mode_manager_unittest.cc

Issue 1778873002: Replace Increment/DecrementKeepAliveCount by ScopedKeepAlives (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@KAObserver
Patch Set: Created 4 years, 9 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
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
14 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
15 #include "base/test/test_simple_task_runner.h" 15 #include "base/test/test_simple_task_runner.h"
16 #include "base/thread_task_runner_handle.h" 16 #include "base/thread_task_runner_handle.h"
17 #include "build/build_config.h" 17 #include "build/build_config.h"
18 #include "chrome/browser/background/background_mode_manager.h" 18 #include "chrome/browser/background/background_mode_manager.h"
19 #include "chrome/browser/background/background_trigger.h" 19 #include "chrome/browser/background/background_trigger.h"
20 #include "chrome/browser/browser_shutdown.h" 20 #include "chrome/browser/browser_shutdown.h"
21 #include "chrome/browser/extensions/extension_function_test_utils.h" 21 #include "chrome/browser/extensions/extension_function_test_utils.h"
22 #include "chrome/browser/extensions/extension_service.h" 22 #include "chrome/browser/extensions/extension_service.h"
23 #include "chrome/browser/extensions/test_extension_system.h" 23 #include "chrome/browser/extensions/test_extension_system.h"
24 #include "chrome/browser/lifetime/application_lifetime.h" 24 #include "chrome/browser/lifetime/application_lifetime.h"
25 #include "chrome/browser/lifetime/keep_alive_registry.h"
26 #include "chrome/browser/lifetime/keep_alive_types.h"
27 #include "chrome/browser/lifetime/scoped_keep_alive.h"
25 #include "chrome/browser/profiles/profile_attributes_entry.h" 28 #include "chrome/browser/profiles/profile_attributes_entry.h"
26 #include "chrome/browser/profiles/profile_attributes_storage.h" 29 #include "chrome/browser/profiles/profile_attributes_storage.h"
27 #include "chrome/browser/status_icons/status_icon_menu_model.h" 30 #include "chrome/browser/status_icons/status_icon_menu_model.h"
28 #include "chrome/common/chrome_switches.h" 31 #include "chrome/common/chrome_switches.h"
29 #include "chrome/common/pref_names.h" 32 #include "chrome/common/pref_names.h"
30 #include "chrome/test/base/testing_browser_process.h" 33 #include "chrome/test/base/testing_browser_process.h"
31 #include "chrome/test/base/testing_profile.h" 34 #include "chrome/test/base/testing_profile.h"
32 #include "chrome/test/base/testing_profile_manager.h" 35 #include "chrome/test/base/testing_profile_manager.h"
33 #include "content/public/test/test_browser_thread_bundle.h" 36 #include "content/public/test/test_browser_thread_bundle.h"
34 #include "extensions/browser/api_test_utils.h" 37 #include "extensions/browser/api_test_utils.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 const base::string16& title, 135 const base::string16& title,
133 const base::string16& contents, 136 const base::string16& contents,
134 const message_center::NotifierId& notifier_id) override {} 137 const message_center::NotifierId& notifier_id) override {}
135 void UpdatePlatformContextMenu(StatusIconMenuModel* menu) override {} 138 void UpdatePlatformContextMenu(StatusIconMenuModel* menu) override {}
136 139
137 private: 140 private:
138 DISALLOW_COPY_AND_ASSIGN(TestStatusIcon); 141 DISALLOW_COPY_AND_ASSIGN(TestStatusIcon);
139 }; 142 };
140 143
141 void AssertBackgroundModeActive(const TestBackgroundModeManager& manager) { 144 void AssertBackgroundModeActive(const TestBackgroundModeManager& manager) {
142 EXPECT_TRUE(chrome::WillKeepAlive()); 145 EXPECT_TRUE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
143 EXPECT_TRUE(manager.HaveStatusTray()); 146 EXPECT_TRUE(manager.HaveStatusTray());
144 } 147 }
145 148
146 void AssertBackgroundModeInactive(const TestBackgroundModeManager& manager) { 149 void AssertBackgroundModeInactive(const TestBackgroundModeManager& manager) {
147 EXPECT_FALSE(chrome::WillKeepAlive()); 150 EXPECT_FALSE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
148 EXPECT_FALSE(manager.HaveStatusTray()); 151 EXPECT_FALSE(manager.HaveStatusTray());
149 } 152 }
150 153
151 } // namespace 154 } // namespace
152 155
153 // More complex test helper that exposes APIs for fine grained control of 156 // More complex test helper that exposes APIs for fine grained control of
154 // things like the number of background applications. This allows writing 157 // things like the number of background applications. This allows writing
155 // smaller tests that don't have to install/uninstall extensions. 158 // smaller tests that don't have to install/uninstall extensions.
156 class AdvancedTestBackgroundModeManager : public TestBackgroundModeManager { 159 class AdvancedTestBackgroundModeManager : public TestBackgroundModeManager {
157 public: 160 public:
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 ~BackgroundModeManagerWithExtensionsTest() override {} 232 ~BackgroundModeManagerWithExtensionsTest() override {}
230 233
231 void SetUp() override { 234 void SetUp() override {
232 command_line_.reset(new base::CommandLine(base::CommandLine::NO_PROGRAM)); 235 command_line_.reset(new base::CommandLine(base::CommandLine::NO_PROGRAM));
233 profile_manager_ = CreateTestingProfileManager(); 236 profile_manager_ = CreateTestingProfileManager();
234 profile_ = profile_manager_->CreateTestingProfile("p1"); 237 profile_ = profile_manager_->CreateTestingProfile("p1");
235 238
236 // Aura clears notifications from the message center at shutdown. 239 // Aura clears notifications from the message center at shutdown.
237 message_center::MessageCenter::Initialize(); 240 message_center::MessageCenter::Initialize();
238 241
239 // BackgroundModeManager actually affects Chrome start/stop state, 242 test_keep_alive_.reset(
240 // tearing down our thread bundle before we've had chance to clean 243 new ScopedKeepAlive(KeepAliveOrigin::BACKGROUND_MODE_MANAGER,
241 // everything up. Keeping Chrome alive prevents this. 244 KeepAliveRestartOption::DISABLED));
242 // We aren't interested in if the keep alive works correctly in this test.
243 chrome::IncrementKeepAliveCount();
244 245
245 #if defined(OS_CHROMEOS) 246 #if defined(OS_CHROMEOS)
246 // On ChromeOS shutdown, HandleAppExitingForPlatform will call 247 // TODO(dgn): reset() on the empty keep alive would do nothing, is it
247 // chrome::DecrementKeepAliveCount because it assumes the aura shell 248 // ok to just skip?
248 // called chrome::IncrementKeepAliveCount. Simulate the call here.
249 chrome::IncrementKeepAliveCount();
dgn 2016/03/09 23:49:23 This is not needed anymore because the reset() cal
250 #endif 249 #endif
251 250
252 // Create our test BackgroundModeManager. 251 // Create our test BackgroundModeManager.
253 manager_.reset(new TestBackgroundModeManager( 252 manager_.reset(new TestBackgroundModeManager(
254 *command_line_, profile_manager_->profile_attributes_storage())); 253 *command_line_, profile_manager_->profile_attributes_storage()));
255 manager_->RegisterProfile(profile_); 254 manager_->RegisterProfile(profile_);
256 } 255 }
257 256
258 void TearDown() override { 257 void TearDown() override {
259 // Clean up the status icon. If this is not done before profile deletes, 258 // Clean up the status icon. If this is not done before profile deletes,
260 // the context menu updates will DCHECK with the now deleted profiles. 259 // the context menu updates will DCHECK with the now deleted profiles.
261 StatusIcon* status_icon = manager_->status_icon_; 260 StatusIcon* status_icon = manager_->status_icon_;
262 manager_->status_icon_ = NULL; 261 manager_->status_icon_ = NULL;
263 delete status_icon; 262 delete status_icon;
264 263
265 // We have to destroy the profiles now because we created them with real 264 // We have to destroy the profiles now because we created them with real
266 // thread state. This causes a lot of machinery to spin up that stops 265 // thread state. This causes a lot of machinery to spin up that stops
267 // working when we tear down our thread state at the end of the test. 266 // working when we tear down our thread state at the end of the test.
268 // Deleting our testing profile may have the side-effect of disabling 267 // Deleting our testing profile may have the side-effect of disabling
269 // background mode if it was enabled for that profile (explicitly note that 268 // background mode if it was enabled for that profile (explicitly note that
270 // here to satisfy StrictMock requirements. 269 // here to satisfy StrictMock requirements.
271 EXPECT_CALL(*manager_, EnableLaunchOnStartup(false)).Times(AtMost(1)); 270 EXPECT_CALL(*manager_, EnableLaunchOnStartup(false)).Times(AtMost(1));
272 profile_manager_->DeleteAllTestingProfiles(); 271 profile_manager_->DeleteAllTestingProfiles();
273 Mock::VerifyAndClearExpectations(manager_.get()); 272 Mock::VerifyAndClearExpectations(manager_.get());
274 273
275 // We're getting ready to shutdown the message loop. Clear everything out! 274 // We're getting ready to shutdown the message loop. Clear everything out!
276 base::MessageLoop::current()->RunUntilIdle(); 275 base::MessageLoop::current()->RunUntilIdle();
277 // Matching the call to IncrementKeepAliveCount in SetUp(). 276
278 chrome::DecrementKeepAliveCount(); 277 test_keep_alive_.reset();
279 278
280 // TestBackgroundModeManager has dependencies on the infrastructure. 279 // TestBackgroundModeManager has dependencies on the infrastructure.
281 // It should get cleared first. 280 // It should get cleared first.
282 manager_.reset(); 281 manager_.reset();
283 282
284 // The Profile Manager references the Browser Process. 283 // The Profile Manager references the Browser Process.
285 // The Browser Process references the Notification UI Manager. 284 // The Browser Process references the Notification UI Manager.
286 // The Notification UI Manager references the Message Center. 285 // The Notification UI Manager references the Message Center.
287 // As a result, we have to clear the browser process state here 286 // As a result, we have to clear the browser process state here
288 // before tearing down the Message Center. 287 // before tearing down the Message Center.
289 profile_manager_.reset(); 288 profile_manager_.reset();
290 289
291 // Message Center shutdown must occur after the DecrementKeepAliveCount 290 // Message Center shutdown must occur after the KeepAlive is released
292 // because DecrementKeepAliveCount will end up referencing the message 291 // because clearing them will end up referencing the message center.
293 // center during cleanup.
294 message_center::MessageCenter::Shutdown(); 292 message_center::MessageCenter::Shutdown();
295 293
296 // Clear the shutdown flag to isolate the remaining effect of this test. 294 // Clear the shutdown flag to isolate the remaining effect of this test.
297 browser_shutdown::SetTryingToQuit(false); 295 browser_shutdown::SetTryingToQuit(false);
298 } 296 }
299 297
300 protected: 298 protected:
301 scoped_refptr<extensions::Extension> CreateExtension( 299 scoped_refptr<extensions::Extension> CreateExtension(
302 extensions::Manifest::Location location, 300 extensions::Manifest::Location location,
303 const std::string& data, 301 const std::string& data,
(...skipping 18 matching lines...) Expand all
322 scoped_ptr<base::CommandLine> command_line_; 320 scoped_ptr<base::CommandLine> command_line_;
323 321
324 scoped_ptr<TestingProfileManager> profile_manager_; 322 scoped_ptr<TestingProfileManager> profile_manager_;
325 // Test profile used by all tests - this is owned by profile_manager_. 323 // Test profile used by all tests - this is owned by profile_manager_.
326 TestingProfile* profile_; 324 TestingProfile* profile_;
327 325
328 private: 326 private:
329 // Required for extension service. 327 // Required for extension service.
330 content::TestBrowserThreadBundle thread_bundle_; 328 content::TestBrowserThreadBundle thread_bundle_;
331 329
330 // BackgroundModeManager actually affects Chrome start/stop state,
331 // tearing down our thread bundle before we've had chance to clean
332 // everything up. Keeping Chrome alive prevents this.
333 // We aren't interested in if the keep alive works correctly in this test.
334 scoped_ptr<ScopedKeepAlive> test_keep_alive_;
335
332 #if defined(OS_CHROMEOS) 336 #if defined(OS_CHROMEOS)
333 // ChromeOS needs extra services to run in the following order. 337 // ChromeOS needs extra services to run in the following order.
334 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; 338 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_;
335 chromeos::ScopedTestCrosSettings test_cros_settings_; 339 chromeos::ScopedTestCrosSettings test_cros_settings_;
336 chromeos::ScopedTestUserManager test_user_manager_; 340 chromeos::ScopedTestUserManager test_user_manager_;
337 #endif 341 #endif
338 342
339 DISALLOW_COPY_AND_ASSIGN(BackgroundModeManagerWithExtensionsTest); 343 DISALLOW_COPY_AND_ASSIGN(BackgroundModeManagerWithExtensionsTest);
340 }; 344 };
341 345
342 346
343 TEST_F(BackgroundModeManagerTest, BackgroundAppLoadUnload) { 347 TEST_F(BackgroundModeManagerTest, BackgroundAppLoadUnload) {
344 AdvancedTestBackgroundModeManager manager( 348 AdvancedTestBackgroundModeManager manager(
345 *command_line_, profile_manager_->profile_attributes_storage(), true); 349 *command_line_, profile_manager_->profile_attributes_storage(), true);
346 manager.RegisterProfile(profile_); 350 manager.RegisterProfile(profile_);
347 EXPECT_FALSE(chrome::WillKeepAlive()); 351 EXPECT_FALSE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
348 352
349 // Mimic app load. 353 // Mimic app load.
350 EXPECT_CALL(manager, EnableLaunchOnStartup(true)).Times(Exactly(1)); 354 EXPECT_CALL(manager, EnableLaunchOnStartup(true)).Times(Exactly(1));
351 manager.OnBackgroundClientInstalled(base::UTF8ToUTF16("name")); 355 manager.OnBackgroundClientInstalled(base::UTF8ToUTF16("name"));
352 manager.SetBackgroundClientCountForProfile(profile_, 1); 356 manager.SetBackgroundClientCountForProfile(profile_, 1);
353 manager.OnApplicationListChanged(profile_); 357 manager.OnApplicationListChanged(profile_);
354 Mock::VerifyAndClearExpectations(&manager); 358 Mock::VerifyAndClearExpectations(&manager);
355 AssertBackgroundModeActive(manager); 359 AssertBackgroundModeActive(manager);
356 360
357 manager.SuspendBackgroundMode(); 361 manager.SuspendBackgroundMode();
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 Mock::VerifyAndClearExpectations(&manager); 474 Mock::VerifyAndClearExpectations(&manager);
471 AssertBackgroundModeInactive(manager); 475 AssertBackgroundModeInactive(manager);
472 } 476 }
473 477
474 TEST_F(BackgroundModeManagerTest, MultiProfile) { 478 TEST_F(BackgroundModeManagerTest, MultiProfile) {
475 TestingProfile* profile2 = profile_manager_->CreateTestingProfile("p2"); 479 TestingProfile* profile2 = profile_manager_->CreateTestingProfile("p2");
476 AdvancedTestBackgroundModeManager manager( 480 AdvancedTestBackgroundModeManager manager(
477 *command_line_, profile_manager_->profile_attributes_storage(), true); 481 *command_line_, profile_manager_->profile_attributes_storage(), true);
478 manager.RegisterProfile(profile_); 482 manager.RegisterProfile(profile_);
479 manager.RegisterProfile(profile2); 483 manager.RegisterProfile(profile2);
480 EXPECT_FALSE(chrome::WillKeepAlive()); 484 EXPECT_FALSE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
481 485
482 // Install app, should show status tray icon. 486 // Install app, should show status tray icon.
483 EXPECT_CALL(manager, EnableLaunchOnStartup(true)).Times(Exactly(1)); 487 EXPECT_CALL(manager, EnableLaunchOnStartup(true)).Times(Exactly(1));
484 manager.OnBackgroundClientInstalled(base::UTF8ToUTF16("name")); 488 manager.OnBackgroundClientInstalled(base::UTF8ToUTF16("name"));
485 manager.SetBackgroundClientCountForProfile(profile_, 1); 489 manager.SetBackgroundClientCountForProfile(profile_, 1);
486 manager.OnApplicationListChanged(profile_); 490 manager.OnApplicationListChanged(profile_);
487 Mock::VerifyAndClearExpectations(&manager); 491 Mock::VerifyAndClearExpectations(&manager);
488 AssertBackgroundModeActive(manager); 492 AssertBackgroundModeActive(manager);
489 493
490 // Install app for other profile, should show other status tray icon. 494 // Install app for other profile, should show other status tray icon.
(...skipping 30 matching lines...) Expand all
521 AssertBackgroundModeInactive(manager); 525 AssertBackgroundModeInactive(manager);
522 } 526 }
523 527
524 TEST_F(BackgroundModeManagerTest, ProfileAttributesStorage) { 528 TEST_F(BackgroundModeManagerTest, ProfileAttributesStorage) {
525 TestingProfile* profile2 = profile_manager_->CreateTestingProfile("p2"); 529 TestingProfile* profile2 = profile_manager_->CreateTestingProfile("p2");
526 ProfileAttributesStorage* storage = 530 ProfileAttributesStorage* storage =
527 profile_manager_->profile_attributes_storage(); 531 profile_manager_->profile_attributes_storage();
528 AdvancedTestBackgroundModeManager manager(*command_line_, storage, true); 532 AdvancedTestBackgroundModeManager manager(*command_line_, storage, true);
529 manager.RegisterProfile(profile_); 533 manager.RegisterProfile(profile_);
530 manager.RegisterProfile(profile2); 534 manager.RegisterProfile(profile2);
531 EXPECT_FALSE(chrome::WillKeepAlive()); 535 EXPECT_FALSE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
532 EXPECT_EQ(2u, storage->GetNumberOfProfiles()); 536 EXPECT_EQ(2u, storage->GetNumberOfProfiles());
533 537
534 ProfileAttributesEntry* entry1; 538 ProfileAttributesEntry* entry1;
535 ProfileAttributesEntry* entry2; 539 ProfileAttributesEntry* entry2;
536 ASSERT_TRUE(storage->GetProfileAttributesWithPath(profile_->GetPath(), 540 ASSERT_TRUE(storage->GetProfileAttributesWithPath(profile_->GetPath(),
537 &entry1)); 541 &entry1));
538 ASSERT_TRUE(storage->GetProfileAttributesWithPath(profile2->GetPath(), 542 ASSERT_TRUE(storage->GetProfileAttributesWithPath(profile2->GetPath(),
539 &entry2)); 543 &entry2));
540 544
541 EXPECT_FALSE(entry1->GetBackgroundStatus()); 545 EXPECT_FALSE(entry1->GetBackgroundStatus());
(...skipping 28 matching lines...) Expand all
570 574
571 // Even though neither has background status on, there should still be two 575 // Even though neither has background status on, there should still be two
572 // profiles in the ProfileAttributesStorage. 576 // profiles in the ProfileAttributesStorage.
573 EXPECT_EQ(2u, storage->GetNumberOfProfiles()); 577 EXPECT_EQ(2u, storage->GetNumberOfProfiles());
574 } 578 }
575 579
576 TEST_F(BackgroundModeManagerTest, ProfileAttributesStorageObserver) { 580 TEST_F(BackgroundModeManagerTest, ProfileAttributesStorageObserver) {
577 AdvancedTestBackgroundModeManager manager( 581 AdvancedTestBackgroundModeManager manager(
578 *command_line_, profile_manager_->profile_attributes_storage(), true); 582 *command_line_, profile_manager_->profile_attributes_storage(), true);
579 manager.RegisterProfile(profile_); 583 manager.RegisterProfile(profile_);
580 EXPECT_FALSE(chrome::WillKeepAlive()); 584 EXPECT_FALSE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
581 585
582 // Install app, should show status tray icon. 586 // Install app, should show status tray icon.
583 EXPECT_CALL(manager, EnableLaunchOnStartup(true)).Times(Exactly(1)); 587 EXPECT_CALL(manager, EnableLaunchOnStartup(true)).Times(Exactly(1));
584 manager.OnBackgroundClientInstalled(base::UTF8ToUTF16("name")); 588 manager.OnBackgroundClientInstalled(base::UTF8ToUTF16("name"));
585 manager.SetBackgroundClientCountForProfile(profile_, 1); 589 manager.SetBackgroundClientCountForProfile(profile_, 1);
586 manager.OnApplicationListChanged(profile_); 590 manager.OnApplicationListChanged(profile_);
587 Mock::VerifyAndClearExpectations(&manager); 591 Mock::VerifyAndClearExpectations(&manager);
588 592
589 // Background mode should remain active for the remainder of this test. 593 // Background mode should remain active for the remainder of this test.
590 594
591 manager.OnProfileNameChanged( 595 manager.OnProfileNameChanged(
592 profile_->GetPath(), 596 profile_->GetPath(),
593 manager.GetBackgroundModeData(profile_)->name()); 597 manager.GetBackgroundModeData(profile_)->name());
594 598
595 EXPECT_EQ(base::UTF8ToUTF16("p1"), 599 EXPECT_EQ(base::UTF8ToUTF16("p1"),
596 manager.GetBackgroundModeData(profile_)->name()); 600 manager.GetBackgroundModeData(profile_)->name());
597 601
598 EXPECT_TRUE(chrome::WillKeepAlive()); 602 EXPECT_TRUE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
599 TestingProfile* profile2 = profile_manager_->CreateTestingProfile("p2"); 603 TestingProfile* profile2 = profile_manager_->CreateTestingProfile("p2");
600 manager.RegisterProfile(profile2); 604 manager.RegisterProfile(profile2);
601 EXPECT_EQ(2, manager.NumberOfBackgroundModeData()); 605 EXPECT_EQ(2, manager.NumberOfBackgroundModeData());
602 606
603 manager.OnProfileAdded(profile2->GetPath()); 607 manager.OnProfileAdded(profile2->GetPath());
604 EXPECT_EQ(base::UTF8ToUTF16("p2"), 608 EXPECT_EQ(base::UTF8ToUTF16("p2"),
605 manager.GetBackgroundModeData(profile2)->name()); 609 manager.GetBackgroundModeData(profile2)->name());
606 610
607 manager.OnProfileWillBeRemoved(profile2->GetPath()); 611 manager.OnProfileWillBeRemoved(profile2->GetPath());
608 // Should still be in background mode after deleting profile. 612 // Should still be in background mode after deleting profile.
609 EXPECT_TRUE(chrome::WillKeepAlive()); 613 EXPECT_TRUE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
610 EXPECT_EQ(1, manager.NumberOfBackgroundModeData()); 614 EXPECT_EQ(1, manager.NumberOfBackgroundModeData());
611 615
612 // Check that the background mode data we think is in the map actually is. 616 // Check that the background mode data we think is in the map actually is.
613 EXPECT_EQ(base::UTF8ToUTF16("p1"), 617 EXPECT_EQ(base::UTF8ToUTF16("p1"),
614 manager.GetBackgroundModeData(profile_)->name()); 618 manager.GetBackgroundModeData(profile_)->name());
615 } 619 }
616 620
617 TEST_F(BackgroundModeManagerTest, DeleteBackgroundProfile) { 621 TEST_F(BackgroundModeManagerTest, DeleteBackgroundProfile) {
618 // Tests whether deleting the only profile when it is a BG profile works 622 // Tests whether deleting the only profile when it is a BG profile works
619 // or not (http://crbug.com/346214). 623 // or not (http://crbug.com/346214).
620 AdvancedTestBackgroundModeManager manager( 624 AdvancedTestBackgroundModeManager manager(
621 *command_line_, profile_manager_->profile_attributes_storage(), true); 625 *command_line_, profile_manager_->profile_attributes_storage(), true);
622 manager.RegisterProfile(profile_); 626 manager.RegisterProfile(profile_);
623 EXPECT_FALSE(chrome::WillKeepAlive()); 627 EXPECT_FALSE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
624 628
625 // Install app, should show status tray icon. 629 // Install app, should show status tray icon.
626 EXPECT_CALL(manager, EnableLaunchOnStartup(true)).Times(Exactly(1)); 630 EXPECT_CALL(manager, EnableLaunchOnStartup(true)).Times(Exactly(1));
627 manager.OnBackgroundClientInstalled(base::UTF8ToUTF16("name")); 631 manager.OnBackgroundClientInstalled(base::UTF8ToUTF16("name"));
628 manager.SetBackgroundClientCountForProfile(profile_, 1); 632 manager.SetBackgroundClientCountForProfile(profile_, 1);
629 manager.OnApplicationListChanged(profile_); 633 manager.OnApplicationListChanged(profile_);
630 Mock::VerifyAndClearExpectations(&manager); 634 Mock::VerifyAndClearExpectations(&manager);
631 635
632 manager.OnProfileNameChanged( 636 manager.OnProfileNameChanged(
633 profile_->GetPath(), 637 profile_->GetPath(),
634 manager.GetBackgroundModeData(profile_)->name()); 638 manager.GetBackgroundModeData(profile_)->name());
635 639
636 EXPECT_CALL(manager, EnableLaunchOnStartup(false)).Times(Exactly(1)); 640 EXPECT_CALL(manager, EnableLaunchOnStartup(false)).Times(Exactly(1));
637 EXPECT_TRUE(chrome::WillKeepAlive()); 641 EXPECT_TRUE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
638 manager.SetBackgroundClientCountForProfile(profile_, 0); 642 manager.SetBackgroundClientCountForProfile(profile_, 0);
639 manager.OnProfileWillBeRemoved(profile_->GetPath()); 643 manager.OnProfileWillBeRemoved(profile_->GetPath());
640 Mock::VerifyAndClearExpectations(&manager); 644 Mock::VerifyAndClearExpectations(&manager);
641 EXPECT_FALSE(chrome::WillKeepAlive()); 645 EXPECT_FALSE(KeepAliveRegistry::GetInstance()->IsKeepingAlive());
642 } 646 }
643 647
644 TEST_F(BackgroundModeManagerTest, DisableBackgroundModeUnderTestFlag) { 648 TEST_F(BackgroundModeManagerTest, DisableBackgroundModeUnderTestFlag) {
645 command_line_->AppendSwitch(switches::kKeepAliveForTest); 649 command_line_->AppendSwitch(switches::kKeepAliveForTest);
646 AdvancedTestBackgroundModeManager manager( 650 AdvancedTestBackgroundModeManager manager(
647 *command_line_, profile_manager_->profile_attributes_storage(), true); 651 *command_line_, profile_manager_->profile_attributes_storage(), true);
648 manager.RegisterProfile(profile_); 652 manager.RegisterProfile(profile_);
649 EXPECT_TRUE(manager.ShouldBeInBackgroundMode()); 653 EXPECT_TRUE(manager.ShouldBeInBackgroundMode());
650 654
651 // No enable-launch-on-startup calls expected yet. 655 // No enable-launch-on-startup calls expected yet.
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
1028 // When the background mode pref is enabled and there are pending triggers 1032 // When the background mode pref is enabled and there are pending triggers
1029 // they will be registered and the user will be notified. 1033 // they will be registered and the user will be notified.
1030 EXPECT_CALL(manager, EnableLaunchOnStartup(true)); 1034 EXPECT_CALL(manager, EnableLaunchOnStartup(true));
1031 g_browser_process->local_state()->SetBoolean(prefs::kBackgroundModeEnabled, 1035 g_browser_process->local_state()->SetBoolean(prefs::kBackgroundModeEnabled,
1032 true); 1036 true);
1033 Mock::VerifyAndClearExpectations(&manager); 1037 Mock::VerifyAndClearExpectations(&manager);
1034 ASSERT_EQ(1, manager.GetBackgroundClientCountForProfile(profile_)); 1038 ASSERT_EQ(1, manager.GetBackgroundClientCountForProfile(profile_));
1035 AssertBackgroundModeActive(manager); 1039 AssertBackgroundModeActive(manager);
1036 ASSERT_TRUE(manager.HasShownBalloon()); 1040 ASSERT_TRUE(manager.HasShownBalloon());
1037 } 1041 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698