| Index: chrome/browser/notifications/extension_welcome_notification_unittest.cc
|
| diff --git a/chrome/browser/notifications/extension_welcome_notification_unittest.cc b/chrome/browser/notifications/extension_welcome_notification_unittest.cc
|
| deleted file mode 100644
|
| index 6e037ad5b94118c6cf6d09e727513718fdc75232..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/notifications/extension_welcome_notification_unittest.cc
|
| +++ /dev/null
|
| @@ -1,551 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/notifications/extension_welcome_notification.h"
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/prefs/pref_service.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/test/test_simple_task_runner.h"
|
| -#include "base/thread_task_runner_handle.h"
|
| -#include "chrome/browser/notifications/notification.h"
|
| -#include "chrome/common/pref_names.h"
|
| -#include "chrome/test/base/testing_pref_service_syncable.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| -#include "components/pref_registry/pref_registry_syncable.h"
|
| -#include "sync/api/fake_sync_change_processor.h"
|
| -#include "sync/api/sync_error_factory_mock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "ui/message_center/fake_message_center.h"
|
| -#include "ui/message_center/notification.h"
|
| -
|
| -const char kChromeNowExtensionID[] = "pafkbggdmjlpgkdkcbjmhmfcdpncadgh";
|
| -
|
| -class MockMessageCenter : public message_center::FakeMessageCenter {
|
| - public:
|
| - MockMessageCenter()
|
| - : add_notification_calls_(0),
|
| - remove_notification_calls_(0),
|
| - notifications_with_shown_as_popup_(0) {
|
| - }
|
| -
|
| - int add_notification_calls() { return add_notification_calls_; }
|
| - int remove_notification_calls() { return remove_notification_calls_; }
|
| - int notifications_with_shown_as_popup() {
|
| - return notifications_with_shown_as_popup_;
|
| - }
|
| -
|
| - // message_center::FakeMessageCenter Overrides
|
| - virtual message_center::Notification* FindVisibleNotificationById(
|
| - const std::string& id) OVERRIDE {
|
| - if (last_notification.get() && last_notification->id() == id)
|
| - return last_notification.get();
|
| - return NULL;
|
| - }
|
| -
|
| - virtual void AddNotification(
|
| - scoped_ptr<message_center::Notification> notification) OVERRIDE {
|
| - EXPECT_FALSE(last_notification.get());
|
| - last_notification.swap(notification);
|
| - add_notification_calls_++;
|
| - if (last_notification->shown_as_popup())
|
| - notifications_with_shown_as_popup_++;
|
| - }
|
| -
|
| - virtual void RemoveNotification(const std::string& id,
|
| - bool by_user) OVERRIDE {
|
| - EXPECT_TRUE(last_notification.get());
|
| - last_notification.reset();
|
| - remove_notification_calls_++;
|
| - }
|
| -
|
| - void CloseCurrentNotification() {
|
| - EXPECT_TRUE(last_notification.get());
|
| - last_notification->delegate()->Close(true);
|
| - RemoveNotification(last_notification->id(), true);
|
| - }
|
| -
|
| - private:
|
| - scoped_ptr<message_center::Notification> last_notification;
|
| - int add_notification_calls_;
|
| - int remove_notification_calls_;
|
| - int notifications_with_shown_as_popup_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MockMessageCenter);
|
| -};
|
| -
|
| -class WelcomeNotificationDelegate
|
| - : public ExtensionWelcomeNotification::Delegate {
|
| -public:
|
| - WelcomeNotificationDelegate()
|
| - : start_time_(base::Time::Now()),
|
| - message_center_(new MockMessageCenter()) {
|
| - }
|
| -
|
| - // ExtensionWelcomeNotification::Delegate
|
| - virtual message_center::MessageCenter* GetMessageCenter() OVERRIDE {
|
| - return message_center_.get();
|
| - }
|
| -
|
| - virtual base::Time GetCurrentTime() OVERRIDE {
|
| - return start_time_ + elapsed_time_;
|
| - }
|
| -
|
| - virtual void PostTask(
|
| - const tracked_objects::Location& from_here,
|
| - const base::Closure& task) OVERRIDE {
|
| - EXPECT_TRUE(pending_task_.is_null());
|
| - pending_task_ = task;
|
| - }
|
| -
|
| - // WelcomeNotificationDelegate
|
| - MockMessageCenter* message_center() const { return message_center_.get(); }
|
| -
|
| - base::Time GetStartTime() const { return start_time_; }
|
| -
|
| - void SetElapsedTime(base::TimeDelta elapsed_time) {
|
| - elapsed_time_ = elapsed_time;
|
| - }
|
| -
|
| - void RunPendingTask() {
|
| - base::Closure task_to_run = pending_task_;
|
| - pending_task_.Reset();
|
| - task_to_run.Run();
|
| - }
|
| -
|
| - private:
|
| - const base::Time start_time_;
|
| - base::TimeDelta elapsed_time_;
|
| - scoped_ptr<MockMessageCenter> message_center_;
|
| - base::Closure pending_task_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WelcomeNotificationDelegate);
|
| -};
|
| -
|
| -class ExtensionWelcomeNotificationTest : public testing::Test {
|
| - protected:
|
| - ExtensionWelcomeNotificationTest() {
|
| - scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry(
|
| - new user_prefs::PrefRegistrySyncable());
|
| - ExtensionWelcomeNotification::RegisterProfilePrefs(pref_registry.get());
|
| - }
|
| -
|
| - virtual void SetUp() {
|
| - task_runner_ = new base::TestSimpleTaskRunner();
|
| - thread_task_runner_handle_.reset(
|
| - new base::ThreadTaskRunnerHandle(task_runner_));
|
| - profile_.reset(new TestingProfile());
|
| - delegate_ = new WelcomeNotificationDelegate();
|
| - welcome_notification_ = ExtensionWelcomeNotification::Create(
|
| - kChromeNowExtensionID, profile_.get(), delegate_);
|
| - }
|
| -
|
| - virtual void TearDown() {
|
| - delegate_ = NULL;
|
| - welcome_notification_.reset();
|
| - profile_.reset();
|
| - thread_task_runner_handle_.reset();
|
| - task_runner_ = NULL;
|
| - }
|
| -
|
| - void StartPreferenceSyncing() const {
|
| - PrefServiceSyncable::FromProfile(profile_.get())
|
| - ->GetSyncableService(syncer::PREFERENCES)
|
| - ->MergeDataAndStartSyncing(syncer::PREFERENCES,
|
| - syncer::SyncDataList(),
|
| - scoped_ptr<syncer::SyncChangeProcessor>(
|
| - new syncer::FakeSyncChangeProcessor),
|
| - scoped_ptr<syncer::SyncErrorFactory>(
|
| - new syncer::SyncErrorFactoryMock()));
|
| - }
|
| -
|
| - void ShowChromeNowNotification() const {
|
| - ShowNotification(
|
| - "ChromeNowNotification",
|
| - message_center::NotifierId(message_center::NotifierId::APPLICATION,
|
| - kChromeNowExtensionID));
|
| - }
|
| -
|
| - void ShowRegularNotification() const {
|
| - ShowNotification(
|
| - "RegularNotification",
|
| - message_center::NotifierId(message_center::NotifierId::APPLICATION,
|
| - "aaaabbbbccccddddeeeeffffggghhhhi"));
|
| - }
|
| -
|
| - void FlushMessageLoop() { delegate_->RunPendingTask(); }
|
| -
|
| - MockMessageCenter* message_center() const {
|
| - return delegate_->message_center();
|
| - }
|
| - base::TestSimpleTaskRunner* task_runner() const {
|
| - return task_runner_.get();
|
| - }
|
| - base::Time GetStartTime() const {
|
| - return delegate_->GetStartTime();
|
| - }
|
| - void SetElapsedTime(base::TimeDelta elapsed_time) const {
|
| - delegate_->SetElapsedTime(elapsed_time);
|
| - }
|
| - bool GetBooleanPref(const char* path) const {
|
| - return profile_->GetPrefs()->GetBoolean(path);
|
| - }
|
| - void SetBooleanPref(const char* path, bool value) const {
|
| - profile_->GetPrefs()->SetBoolean(path, value);
|
| - }
|
| - int64 GetInt64Pref(const char* path) const {
|
| - return profile_->GetPrefs()->GetInt64(path);
|
| - }
|
| - void SetInt64Pref(const char* path, int64 value) const {
|
| - profile_->GetPrefs()->SetInt64(path, value);
|
| - }
|
| -
|
| - private:
|
| - class TestNotificationDelegate : public NotificationDelegate {
|
| - public:
|
| - explicit TestNotificationDelegate(const std::string& id) : id_(id) {}
|
| -
|
| - // Overridden from NotificationDelegate:
|
| - virtual void Display() OVERRIDE {}
|
| - virtual void Error() OVERRIDE {}
|
| - virtual void Close(bool by_user) OVERRIDE {}
|
| - virtual void Click() OVERRIDE {}
|
| - virtual void ButtonClick(int index) OVERRIDE {}
|
| -
|
| - virtual std::string id() const OVERRIDE { return id_; }
|
| -
|
| - virtual content::WebContents* GetWebContents() const OVERRIDE {
|
| - return NULL;
|
| - }
|
| -
|
| - private:
|
| - virtual ~TestNotificationDelegate() {}
|
| -
|
| - const std::string id_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestNotificationDelegate);
|
| - };
|
| -
|
| - void ShowNotification(std::string notification_id,
|
| - const message_center::NotifierId& notifier_id) const {
|
| - message_center::RichNotificationData rich_notification_data;
|
| - rich_notification_data.priority = 0;
|
| - Notification notification(message_center::NOTIFICATION_TYPE_BASE_FORMAT,
|
| - GURL("http://tests.url"),
|
| - base::UTF8ToUTF16("Title"),
|
| - base::UTF8ToUTF16("Body"),
|
| - gfx::Image(),
|
| - blink::WebTextDirectionDefault,
|
| - notifier_id,
|
| - base::UTF8ToUTF16("Source"),
|
| - base::UTF8ToUTF16(notification_id),
|
| - rich_notification_data,
|
| - new TestNotificationDelegate("TestNotification"));
|
| - welcome_notification_->ShowWelcomeNotificationIfNecessary(notification);
|
| - }
|
| -
|
| - scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
|
| - scoped_ptr<base::ThreadTaskRunnerHandle> thread_task_runner_handle_;
|
| - scoped_ptr<TestingProfile> profile_;
|
| - // Weak Ref owned by welcome_notification_
|
| - WelcomeNotificationDelegate* delegate_;
|
| - scoped_ptr<ExtensionWelcomeNotification> welcome_notification_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ExtensionWelcomeNotificationTest);
|
| -};
|
| -
|
| -// Show a regular notification. Expect that WelcomeNotification will
|
| -// not show a welcome notification.
|
| -TEST_F(ExtensionWelcomeNotificationTest, FirstRunShowRegularNotification) {
|
| - StartPreferenceSyncing();
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - ShowRegularNotification();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -}
|
| -
|
| -// Show a Chrome Now notification. Expect that WelcomeNotification will
|
| -// show a welcome notification.
|
| -TEST_F(ExtensionWelcomeNotificationTest, FirstRunChromeNowNotification) {
|
| - StartPreferenceSyncing();
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - ShowChromeNowNotification();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 1);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -}
|
| -
|
| -// Show a Chrome Now notification that was already shown before.
|
| -TEST_F(ExtensionWelcomeNotificationTest, ShowWelcomeNotificationAgain) {
|
| - StartPreferenceSyncing();
|
| - SetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp, true);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - ShowChromeNowNotification();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 1);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 1);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -}
|
| -
|
| -// Don't show a welcome notification if it was previously dismissed on another
|
| -// machine that wrote the synced flag.
|
| -TEST_F(ExtensionWelcomeNotificationTest,
|
| - WelcomeNotificationPreviouslyDismissed) {
|
| - StartPreferenceSyncing();
|
| - SetBooleanPref(prefs::kWelcomeNotificationDismissed, true);
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - ShowChromeNowNotification();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -}
|
| -
|
| -// Don't show a welcome notification if it was previously dismissed on this
|
| -// machine.
|
| -TEST_F(ExtensionWelcomeNotificationTest,
|
| - WelcomeNotificationPreviouslyDismissedLocal) {
|
| - StartPreferenceSyncing();
|
| - SetBooleanPref(prefs::kWelcomeNotificationDismissedLocal, true);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - ShowChromeNowNotification();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -}
|
| -
|
| -// Don't show a welcome notification if it was previously dismissed with the
|
| -// local flag and synced flag. This case is possible but rare.
|
| -TEST_F(ExtensionWelcomeNotificationTest,
|
| - WelcomeNotificationPreviouslyDismissedSyncedAndLocal) {
|
| - StartPreferenceSyncing();
|
| - SetBooleanPref(prefs::kWelcomeNotificationDismissed, true);
|
| - SetBooleanPref(prefs::kWelcomeNotificationDismissedLocal, true);
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - ShowChromeNowNotification();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -}
|
| -
|
| -// Show a Chrome Now notification and dismiss it.
|
| -// Expect welcome toast dismissed to be true.
|
| -TEST_F(ExtensionWelcomeNotificationTest, DismissWelcomeNotification) {
|
| - StartPreferenceSyncing();
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - ShowChromeNowNotification();
|
| - message_center()->CloseCurrentNotification();
|
| - FlushMessageLoop();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 1);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 1);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -}
|
| -
|
| -// Show a Chrome Now notification and dismiss it via a synced preference change.
|
| -// Expect welcome toast dismissed to be true.
|
| -TEST_F(ExtensionWelcomeNotificationTest, SyncedDismissalWelcomeNotification) {
|
| - StartPreferenceSyncing();
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - ShowChromeNowNotification();
|
| - SetBooleanPref(prefs::kWelcomeNotificationDismissed, true);
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 1);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 1);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -}
|
| -
|
| -// Simulate a delayed preference sync when the welcome notification was
|
| -// previously dismissed.
|
| -TEST_F(ExtensionWelcomeNotificationTest,
|
| - DelayedPreferenceSyncPreviouslyDismissed) {
|
| - // Show a notification while the preference system is not syncing.
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - ShowChromeNowNotification();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - // Now start the preference syncing with a previously dismissed welcome.
|
| - SetBooleanPref(prefs::kWelcomeNotificationDismissed, true);
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - StartPreferenceSyncing();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -}
|
| -
|
| -// Simulate a delayed preference sync when the welcome notification was
|
| -// never shown.
|
| -TEST_F(ExtensionWelcomeNotificationTest, DelayedPreferenceSyncNeverShown) {
|
| - // Show a notification while the preference system is not syncing.
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - ShowChromeNowNotification();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - // Now start the preference syncing with the default preference values.
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -
|
| - StartPreferenceSyncing();
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 1);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| -}
|
| -
|
| -// Simulate the passage of time when the welcome notification
|
| -// automatically dismisses.
|
| -TEST_F(ExtensionWelcomeNotificationTest, TimeExpiredNotification) {
|
| - StartPreferenceSyncing();
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| - EXPECT_EQ(GetInt64Pref(prefs::kWelcomeNotificationExpirationTimestamp), 0);
|
| - EXPECT_TRUE(task_runner()->GetPendingTasks().empty());
|
| -
|
| - ShowChromeNowNotification();
|
| -
|
| - base::TimeDelta requested_show_time =
|
| - base::TimeDelta::FromDays(
|
| - ExtensionWelcomeNotification::kRequestedShowTimeDays);
|
| -
|
| - EXPECT_EQ(task_runner()->GetPendingTasks().size(), 1U);
|
| - EXPECT_EQ(task_runner()->NextPendingTaskDelay(), requested_show_time);
|
| -
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 1);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| - EXPECT_EQ(
|
| - GetInt64Pref(prefs::kWelcomeNotificationExpirationTimestamp),
|
| - (GetStartTime() + requested_show_time).ToInternalValue());
|
| -
|
| - SetElapsedTime(requested_show_time);
|
| - task_runner()->RunPendingTasks();
|
| -
|
| - EXPECT_TRUE(task_runner()->GetPendingTasks().empty());
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 1);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 1);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| - EXPECT_EQ(
|
| - GetInt64Pref(prefs::kWelcomeNotificationExpirationTimestamp),
|
| - (GetStartTime() + requested_show_time).ToInternalValue());
|
| -}
|
| -
|
| -// Simulate the passage of time after Chrome is closed and the welcome
|
| -// notification expiration elapses.
|
| -TEST_F(ExtensionWelcomeNotificationTest, NotificationPreviouslyExpired) {
|
| - StartPreferenceSyncing();
|
| - SetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp, true);
|
| - SetInt64Pref(prefs::kWelcomeNotificationExpirationTimestamp, 1);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| - EXPECT_EQ(GetInt64Pref(prefs::kWelcomeNotificationExpirationTimestamp), 1);
|
| - EXPECT_TRUE(task_runner()->GetPendingTasks().empty());
|
| -
|
| - const base::TimeDelta requested_show_time =
|
| - base::TimeDelta::FromDays(
|
| - ExtensionWelcomeNotification::kRequestedShowTimeDays);
|
| - SetElapsedTime(requested_show_time);
|
| - ShowChromeNowNotification();
|
| -
|
| - EXPECT_TRUE(task_runner()->GetPendingTasks().empty());
|
| - EXPECT_EQ(message_center()->add_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->remove_notification_calls(), 0);
|
| - EXPECT_EQ(message_center()->notifications_with_shown_as_popup(), 0);
|
| - EXPECT_FALSE(GetBooleanPref(prefs::kWelcomeNotificationDismissed));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationDismissedLocal));
|
| - EXPECT_TRUE(GetBooleanPref(prefs::kWelcomeNotificationPreviouslyPoppedUp));
|
| - EXPECT_EQ(GetInt64Pref(prefs::kWelcomeNotificationExpirationTimestamp), 1);
|
| -}
|
|
|