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

Unified Diff: chrome/browser/notifications/extension_welcome_notification_unittest.cc

Issue 580093003: Factor Google Now welcome notifications out of DesktopNotificationService. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
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);
-}

Powered by Google App Engine
This is Rietveld 408576698