OLD | NEW |
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/api/idle/idle_api.h" | 5 #include "chrome/browser/extensions/api/idle/idle_api.h" |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
11 #include "chrome/browser/chrome_notification_types.h" | 11 #include "chrome/browser/chrome_notification_types.h" |
12 #include "chrome/browser/extensions/api/idle/idle_api_constants.h" | 12 #include "chrome/browser/extensions/api/idle/idle_api_constants.h" |
13 #include "chrome/browser/extensions/api/idle/idle_manager.h" | 13 #include "chrome/browser/extensions/api/idle/idle_manager.h" |
14 #include "chrome/browser/extensions/api/idle/idle_manager_factory.h" | 14 #include "chrome/browser/extensions/api/idle/idle_manager_factory.h" |
15 #include "chrome/browser/extensions/extension_api_unittest.h" | 15 #include "chrome/browser/extensions/extension_api_unittest.h" |
16 #include "chrome/common/extensions/api/idle.h" | 16 #include "chrome/common/extensions/api/idle.h" |
17 #include "content/public/browser/notification_details.h" | 17 #include "content/public/browser/notification_details.h" |
18 #include "content/public/browser/notification_source.h" | 18 #include "content/public/browser/notification_source.h" |
19 #include "extensions/browser/event_router.h" | 19 #include "extensions/browser/event_router.h" |
| 20 #include "extensions/browser/extension_registry.h" |
20 #include "extensions/common/extension.h" | 21 #include "extensions/common/extension.h" |
21 #include "testing/gmock/include/gmock/gmock.h" | 22 #include "testing/gmock/include/gmock/gmock.h" |
22 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
23 | 24 |
24 using ::testing::_; | 25 using ::testing::_; |
25 | 26 |
26 namespace idle = extensions::api::idle; | 27 namespace idle = extensions::api::idle; |
27 | 28 |
28 namespace extensions { | 29 namespace extensions { |
29 | 30 |
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 { | 503 { |
503 ScopedListen listen(idle_manager_, extension()->id()); | 504 ScopedListen listen(idle_manager_, extension()->id()); |
504 idle_provider_->set_idle_time(16); | 505 idle_provider_->set_idle_time(16); |
505 EXPECT_CALL(*event_delegate_, | 506 EXPECT_CALL(*event_delegate_, |
506 OnStateChanged(extension()->id(), IDLE_STATE_IDLE)); | 507 OnStateChanged(extension()->id(), IDLE_STATE_IDLE)); |
507 idle_manager_->UpdateIdleState(); | 508 idle_manager_->UpdateIdleState(); |
508 testing::Mock::VerifyAndClearExpectations(event_delegate_); | 509 testing::Mock::VerifyAndClearExpectations(event_delegate_); |
509 } | 510 } |
510 | 511 |
511 // Threshold will reset after unload (and listen count == 0) | 512 // Threshold will reset after unload (and listen count == 0) |
512 UnloadedExtensionInfo details(extension(), | 513 ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile()); |
513 UnloadedExtensionInfo::REASON_UNINSTALL); | 514 registry->TriggerOnUnloaded(extension(), |
514 idle_manager_->Observe( | 515 UnloadedExtensionInfo::REASON_UNINSTALL); |
515 chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, | |
516 content::Source<Profile>(browser()->profile()), | |
517 content::Details<UnloadedExtensionInfo>(&details)); | |
518 | 516 |
519 { | 517 { |
520 ScopedListen listen(idle_manager_, extension()->id()); | 518 ScopedListen listen(idle_manager_, extension()->id()); |
521 idle_manager_->UpdateIdleState(); | 519 idle_manager_->UpdateIdleState(); |
522 testing::Mock::VerifyAndClearExpectations(event_delegate_); | 520 testing::Mock::VerifyAndClearExpectations(event_delegate_); |
523 | 521 |
524 idle_provider_->set_idle_time(61); | 522 idle_provider_->set_idle_time(61); |
525 EXPECT_CALL(*event_delegate_, | 523 EXPECT_CALL(*event_delegate_, |
526 OnStateChanged(extension()->id(), IDLE_STATE_IDLE)); | 524 OnStateChanged(extension()->id(), IDLE_STATE_IDLE)); |
527 idle_manager_->UpdateIdleState(); | 525 idle_manager_->UpdateIdleState(); |
528 } | 526 } |
529 } | 527 } |
530 | 528 |
531 // Verifies that unloading an extension with no listeners or threshold works. | 529 // Verifies that unloading an extension with no listeners or threshold works. |
532 TEST_F(IdleTest, UnloadOnly) { | 530 TEST_F(IdleTest, UnloadOnly) { |
533 UnloadedExtensionInfo details(extension(), | 531 ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile()); |
534 UnloadedExtensionInfo::REASON_UNINSTALL); | 532 registry->TriggerOnUnloaded(extension(), |
535 idle_manager_->Observe( | 533 UnloadedExtensionInfo::REASON_UNINSTALL); |
536 chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, | |
537 content::Source<Profile>(browser()->profile()), | |
538 content::Details<UnloadedExtensionInfo>(&details)); | |
539 } | 534 } |
540 | 535 |
541 // Verifies that its ok for the unload notification to happen before all the | 536 // Verifies that its ok for the unload notification to happen before all the |
542 // listener removals. | 537 // listener removals. |
543 TEST_F(IdleTest, UnloadWhileListening) { | 538 TEST_F(IdleTest, UnloadWhileListening) { |
544 ScopedListen listen(idle_manager_, extension()->id()); | 539 ScopedListen listen(idle_manager_, extension()->id()); |
545 UnloadedExtensionInfo details(extension(), | 540 ExtensionRegistry* registry = ExtensionRegistry::Get(browser()->profile()); |
546 UnloadedExtensionInfo::REASON_UNINSTALL); | 541 registry->TriggerOnUnloaded(extension(), |
547 idle_manager_->Observe( | 542 UnloadedExtensionInfo::REASON_UNINSTALL); |
548 chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, | |
549 content::Source<Profile>(browser()->profile()), | |
550 content::Details<UnloadedExtensionInfo>(&details)); | |
551 } | 543 } |
552 | 544 |
553 // Verifies that re-adding a listener after a state change doesn't immediately | 545 // Verifies that re-adding a listener after a state change doesn't immediately |
554 // fire a change event. Regression test for http://crbug.com/366580. | 546 // fire a change event. Regression test for http://crbug.com/366580. |
555 TEST_F(IdleTest, ReAddListener) { | 547 TEST_F(IdleTest, ReAddListener) { |
556 idle_provider_->set_locked(false); | 548 idle_provider_->set_locked(false); |
557 | 549 |
558 { | 550 { |
559 // Fire idle event. | 551 // Fire idle event. |
560 ScopedListen listen(idle_manager_, "test"); | 552 ScopedListen listen(idle_manager_, "test"); |
561 idle_provider_->set_idle_time(60); | 553 idle_provider_->set_idle_time(60); |
562 EXPECT_CALL(*event_delegate_, OnStateChanged("test", IDLE_STATE_IDLE)); | 554 EXPECT_CALL(*event_delegate_, OnStateChanged("test", IDLE_STATE_IDLE)); |
563 idle_manager_->UpdateIdleState(); | 555 idle_manager_->UpdateIdleState(); |
564 testing::Mock::VerifyAndClearExpectations(event_delegate_); | 556 testing::Mock::VerifyAndClearExpectations(event_delegate_); |
565 } | 557 } |
566 | 558 |
567 // Trigger active. | 559 // Trigger active. |
568 idle_provider_->set_idle_time(0); | 560 idle_provider_->set_idle_time(0); |
569 idle_manager_->UpdateIdleState(); | 561 idle_manager_->UpdateIdleState(); |
570 | 562 |
571 { | 563 { |
572 // Nothing should have fired, the listener wasn't added until afterward. | 564 // Nothing should have fired, the listener wasn't added until afterward. |
573 ScopedListen listen(idle_manager_, "test"); | 565 ScopedListen listen(idle_manager_, "test"); |
574 idle_manager_->UpdateIdleState(); | 566 idle_manager_->UpdateIdleState(); |
575 testing::Mock::VerifyAndClearExpectations(event_delegate_); | 567 testing::Mock::VerifyAndClearExpectations(event_delegate_); |
576 } | 568 } |
577 } | 569 } |
578 | 570 |
579 } // namespace extensions | 571 } // namespace extensions |
OLD | NEW |