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

Unified Diff: ui/aura/mus/user_activity_forwarder_unittest.cc

Issue 2639703004: mus: Forward user activity from window server to detector. (Closed)
Patch Set: fix mash_unittests and use NON_EXPORTED_BASE() Created 3 years, 11 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: ui/aura/mus/user_activity_forwarder_unittest.cc
diff --git a/ui/aura/mus/user_activity_forwarder_unittest.cc b/ui/aura/mus/user_activity_forwarder_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..160910e6b1d17c8ecf63976c86c4f7accf7ebd7f
--- /dev/null
+++ b/ui/aura/mus/user_activity_forwarder_unittest.cc
@@ -0,0 +1,102 @@
+// Copyright 2017 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 "ui/aura/mus/user_activity_forwarder.h"
+
+#include <memory>
+#include <vector>
+
+#include "base/macros.h"
+#include "base/memory/ptr_util.h"
+#include "base/time/time.h"
+#include "mojo/public/cpp/bindings/interface_request.h"
+#include "services/ui/common/task_runner_test_base.h"
+#include "services/ui/public/interfaces/user_activity_monitor.mojom.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/base/user_activity/user_activity_detector.h"
+
+namespace {
+
+// Fake implementation of ui::mojom::UserActivityMonitor for testing that just
+// supports tracking and notifying observers.
+class FakeUserActivityMonitor : public ui::mojom::UserActivityMonitor {
+ public:
+ FakeUserActivityMonitor() : binding_(this) {}
+ ~FakeUserActivityMonitor() override {}
+
+ ui::mojom::UserActivityMonitorPtr GetPtr() {
+ return binding_.CreateInterfacePtrAndBind();
+ }
+
+ // Notifies all observers about user activity.
+ // ui::TaskRunnerTestBase::RunUntilIdle() must be called after this method in
+ // order for observers to receive notifications.
+ void NotifyUserActivityObservers() {
+ for (auto& observer : activity_observers_)
+ observer->OnUserActivity();
+ }
+
+ // ui::mojom::UserActivityMonitor:
+ void AddUserActivityObserver(
+ uint32_t delay_between_notify_secs,
+ ui::mojom::UserActivityObserverPtr observer) override {
+ activity_observers_.push_back(std::move(observer));
+ }
+ void AddUserIdleObserver(uint32_t idleness_in_minutes,
+ ui::mojom::UserIdleObserverPtr observer) override {
+ NOTREACHED() << "Unexpected AddUserIdleObserver call";
+ }
+
+ private:
+ mojo::Binding<ui::mojom::UserActivityMonitor> binding_;
+ std::vector<ui::mojom::UserActivityObserverPtr> activity_observers_;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeUserActivityMonitor);
+};
+
+} // namespace
+
+namespace aura {
+
+class UserActivityForwarderTest : public ui::TaskRunnerTestBase {
+ public:
+ UserActivityForwarderTest() {}
+ ~UserActivityForwarderTest() override {}
+
+ protected:
+ std::unique_ptr<FakeUserActivityMonitor> monitor_;
+ std::unique_ptr<ui::UserActivityDetector> detector_;
+ std::unique_ptr<UserActivityForwarder> forwarder_;
+
+ private:
+ // ui::TaskRunnerTestBase:
+ void SetUp() override {
+ ui::TaskRunnerTestBase::SetUp();
+ monitor_ = base::MakeUnique<FakeUserActivityMonitor>();
+ detector_ = base::MakeUnique<ui::UserActivityDetector>();
+ forwarder_ = base::MakeUnique<UserActivityForwarder>(monitor_->GetPtr(),
+ detector_.get());
+
+ // Run pending tasks so |monitor_| receives |forwarder_|'s registration.
+ RunUntilIdle();
James Cook 2017/01/20 03:38:49 nit: The test might be easier to read if all this
Daniel Erat 2017/01/20 16:49:45 sure, sounds fine to me -- i don't anticipate addi
+ }
+
+ DISALLOW_COPY_AND_ASSIGN(UserActivityForwarderTest);
+};
+
+TEST_F(UserActivityForwarderTest, ForwardActivityToDetector) {
+ base::TimeTicks now = base::TimeTicks::FromInternalValue(1000);
+ detector_->set_now_for_test(now);
+ monitor_->NotifyUserActivityObservers();
+ RunUntilIdle();
+ EXPECT_EQ(now, detector_->last_activity_time());
+
+ now += base::TimeDelta::FromSeconds(10);
+ detector_->set_now_for_test(now);
+ monitor_->NotifyUserActivityObservers();
+ RunUntilIdle();
+ EXPECT_EQ(now, detector_->last_activity_time());
+}
+
+} // namespace aura
James Cook 2017/01/20 03:38:49 Thanks for adding test at the mojo level!
Daniel Erat 2017/01/20 16:49:45 no problem!

Powered by Google App Engine
This is Rietveld 408576698