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

Unified Diff: chrome/browser/upgrade_detector_impl_unittest.cc

Issue 421643002: Make UpgradeDetector listen to VariationsService changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fix gpu bot failures Created 6 years, 4 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
« no previous file with comments | « chrome/browser/upgrade_detector_impl.cc ('k') | chrome/chrome_tests_unit.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/upgrade_detector_impl_unittest.cc
===================================================================
--- chrome/browser/upgrade_detector_impl_unittest.cc (revision 0)
+++ chrome/browser/upgrade_detector_impl_unittest.cc (working copy)
@@ -0,0 +1,112 @@
+// 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/upgrade_detector_impl.h"
+
+#include <vector>
+
+#include "content/public/browser/notification_details.h"
+#include "content/public/browser/notification_observer.h"
+#include "content/public/browser/notification_registrar.h"
+#include "content/public/browser/notification_service.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class TestUpgradeDetectorImpl : public UpgradeDetectorImpl {
+ public:
+ TestUpgradeDetectorImpl() : trigger_critical_update_call_count_(0) {}
+ virtual ~TestUpgradeDetectorImpl() {}
+
+ // Methods exposed for testing.
+ using UpgradeDetectorImpl::OnExperimentChangesDetected;
+ using UpgradeDetectorImpl::NotifyOnUpgradeWithTimePassed;
+
+ // UpgradeDetector:
+ virtual void TriggerCriticalUpdate() OVERRIDE {
+ trigger_critical_update_call_count_++;
+ }
+
+ int trigger_critical_update_call_count() const {
+ return trigger_critical_update_call_count_;
+ }
+
+ private:
+ // How many times TriggerCriticalUpdate() has been called. Expected to either
+ // be 0 or 1.
+ int trigger_critical_update_call_count_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestUpgradeDetectorImpl);
+};
+
+class TestUpgradeNotificationListener : public content::NotificationObserver {
+ public:
+ TestUpgradeNotificationListener() {
+ registrar_.Add(this, chrome::NOTIFICATION_UPGRADE_RECOMMENDED,
+ content::NotificationService::AllSources());
+ }
+ virtual ~TestUpgradeNotificationListener() {
+ }
+
+ const std::vector<int>& notifications_received() const {
+ return notifications_received_;
+ }
+
+ private:
+ // content::NotificationObserver:
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) OVERRIDE {
+ notifications_received_.push_back(type);
+ }
+
+ // Registrar for listening to notifications.
+ content::NotificationRegistrar registrar_;
+
+ // Keeps track of the number and types of notifications that were received.
+ std::vector<int> notifications_received_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestUpgradeNotificationListener);
+};
+
+TEST(UpgradeDetectorImplTest, VariationsChanges) {
+ content::TestBrowserThreadBundle bundle;
+
+ TestUpgradeNotificationListener notifications_listener;
+ TestUpgradeDetectorImpl detector;
+ EXPECT_FALSE(detector.notify_upgrade());
+ EXPECT_TRUE(notifications_listener.notifications_received().empty());
+
+ detector.OnExperimentChangesDetected(
+ chrome_variations::VariationsService::Observer::BEST_EFFORT);
+ EXPECT_FALSE(detector.notify_upgrade());
+ EXPECT_TRUE(notifications_listener.notifications_received().empty());
+
+ detector.NotifyOnUpgradeWithTimePassed(base::TimeDelta::FromDays(30));
+ EXPECT_TRUE(detector.notify_upgrade());
+ ASSERT_EQ(1U, notifications_listener.notifications_received().size());
+ EXPECT_EQ(chrome::NOTIFICATION_UPGRADE_RECOMMENDED,
+ notifications_listener.notifications_received().front());
+ EXPECT_EQ(0, detector.trigger_critical_update_call_count());
+}
+
+TEST(UpgradeDetectorImplTest, VariationsCriticalChanges) {
+ content::TestBrowserThreadBundle bundle;
+
+ TestUpgradeNotificationListener notifications_listener;
+ TestUpgradeDetectorImpl detector;
+ EXPECT_FALSE(detector.notify_upgrade());
+ EXPECT_TRUE(notifications_listener.notifications_received().empty());
+
+ detector.OnExperimentChangesDetected(
+ chrome_variations::VariationsService::Observer::CRITICAL);
+ EXPECT_FALSE(detector.notify_upgrade());
+ EXPECT_TRUE(notifications_listener.notifications_received().empty());
+
+ detector.NotifyOnUpgradeWithTimePassed(base::TimeDelta::FromDays(30));
+ EXPECT_TRUE(detector.notify_upgrade());
+ ASSERT_EQ(1U, notifications_listener.notifications_received().size());
+ EXPECT_EQ(chrome::NOTIFICATION_UPGRADE_RECOMMENDED,
+ notifications_listener.notifications_received().front());
+ EXPECT_EQ(1, detector.trigger_critical_update_call_count());
+}
« no previous file with comments | « chrome/browser/upgrade_detector_impl.cc ('k') | chrome/chrome_tests_unit.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698