| 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 |