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

Unified Diff: chrome/browser/extensions/api/feedback_private/log_source_access_manager_unittest.cc

Issue 2840103002: Add new API function: feedbackPrivate.readLogSource (Closed)
Patch Set: Addressed comments from Patch Set 4 Created 3 years, 7 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/extensions/api/feedback_private/log_source_access_manager_unittest.cc
diff --git a/chrome/browser/extensions/api/feedback_private/log_source_access_manager_unittest.cc b/chrome/browser/extensions/api/feedback_private/log_source_access_manager_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9c0eb6f7257cb231b2a9e6409b4f0dd14a03dbb6
--- /dev/null
+++ b/chrome/browser/extensions/api/feedback_private/log_source_access_manager_unittest.cc
@@ -0,0 +1,238 @@
+// 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 "chrome/browser/extensions/api/feedback_private/log_source_access_manager.h"
+
+#include <string>
+#include <utility>
+
+#include "base/macros.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace extensions {
+
+namespace {
+
+using extensions::api::feedback_private::LOG_SOURCE_MESSAGES;
+using extensions::api::feedback_private::LOG_SOURCE_UI_LATEST;
+using SourceAndExtension = LogSourceAccessManager::SourceAndExtension;
+
+} // namespace
+
+TEST(LogSourceAccessManagerTest, Empty) {
+ LogSourceAccessManager manager((base::TimeDelta()));
+
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_TRUE(manager
+ .GetLastExtensionAccessTime(
+ SourceAndExtension(LOG_SOURCE_UI_LATEST, ""))
+ .is_null());
+}
+
+TEST(LogSourceAccessManagerTest, OneSourceOneExtension) {
+ LogSourceAccessManager manager((base::TimeDelta()));
+
+ const SourceAndExtension key(LOG_SOURCE_MESSAGES, "aaaa");
+
+ EXPECT_TRUE(manager.AddExtension(key));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_FALSE(manager.AddExtension(key));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+
+ EXPECT_TRUE(manager.RemoveExtension(key));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_FALSE(manager.RemoveExtension(key));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+}
+
+TEST(LogSourceAccessManagerTest, OneSourceMultipleExtensions) {
+ LogSourceAccessManager manager((base::TimeDelta()));
+
+ const SourceAndExtension key_a(LOG_SOURCE_MESSAGES, "aaaa");
+ const SourceAndExtension key_b(LOG_SOURCE_MESSAGES, "bbbb");
+ const SourceAndExtension key_c(LOG_SOURCE_MESSAGES, "cccc");
+ const SourceAndExtension key_d(LOG_SOURCE_MESSAGES, "dddd");
+
+ // Add extensions "aaaa", "bbbb", and "cccc".
+ EXPECT_TRUE(manager.AddExtension(key_a));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_FALSE(manager.AddExtension(key_a));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+
+ EXPECT_TRUE(manager.AddExtension(key_b));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_FALSE(manager.AddExtension(key_b));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+
+ EXPECT_TRUE(manager.AddExtension(key_c));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_FALSE(manager.AddExtension(key_c));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+
+ // Remove extensions "bbbb" and "aaaa".
+ EXPECT_TRUE(manager.RemoveExtension(key_b));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_FALSE(manager.RemoveExtension(key_b));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+
+ EXPECT_TRUE(manager.RemoveExtension(key_a));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_FALSE(manager.RemoveExtension(key_a));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+
+ // Add extension "dddd".
+ EXPECT_TRUE(manager.AddExtension(key_d));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_FALSE(manager.AddExtension(key_d));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+
+ // Remove extensions "cccc" and "dddd".
+ EXPECT_TRUE(manager.RemoveExtension(key_c));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_FALSE(manager.RemoveExtension(key_c));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+
+ EXPECT_TRUE(manager.RemoveExtension(key_d));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_FALSE(manager.RemoveExtension(key_d));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+}
+
+TEST(LogSourceAccessManagerTest, MultipleSourcesMultipleExtensions) {
+ LogSourceAccessManager manager((base::TimeDelta()));
+
+ const SourceAndExtension key_a0(LOG_SOURCE_MESSAGES, "aaaa");
+ const SourceAndExtension key_a1(LOG_SOURCE_UI_LATEST, "aaaa");
+ const SourceAndExtension key_b0(LOG_SOURCE_MESSAGES, "bbbb");
+ const SourceAndExtension key_b1(LOG_SOURCE_UI_LATEST, "bbbb");
+ const SourceAndExtension key_c0(LOG_SOURCE_MESSAGES, "cccc");
+ const SourceAndExtension key_c1(LOG_SOURCE_UI_LATEST, "cccc");
+
+ // Add the above entries.
+ EXPECT_TRUE(manager.AddExtension(key_a0));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_TRUE(manager.AddExtension(key_a1));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_FALSE(manager.AddExtension(key_a0));
+ EXPECT_FALSE(manager.AddExtension(key_a1));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+
+ EXPECT_TRUE(manager.AddExtension(key_b0));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_TRUE(manager.AddExtension(key_b1));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_FALSE(manager.AddExtension(key_b0));
+ EXPECT_FALSE(manager.AddExtension(key_b1));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+
+ EXPECT_TRUE(manager.AddExtension(key_c1));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_FALSE(manager.AddExtension(key_c1));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_TRUE(manager.AddExtension(key_c0));
+ EXPECT_FALSE(manager.AddExtension(key_c0));
+ EXPECT_FALSE(manager.AddExtension(key_c1));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+
+ // Remove all the entries.
+ EXPECT_TRUE(manager.RemoveExtension(key_a0));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_FALSE(manager.RemoveExtension(key_a0));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+
+ EXPECT_TRUE(manager.RemoveExtension(key_b0));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_FALSE(manager.RemoveExtension(key_b0));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+
+ EXPECT_TRUE(manager.RemoveExtension(key_c0));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_FALSE(manager.RemoveExtension(key_c0));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(3U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+
+ EXPECT_TRUE(manager.RemoveExtension(key_c1));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_FALSE(manager.RemoveExtension(key_c1));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(2U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+
+ EXPECT_TRUE(manager.RemoveExtension(key_b1));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_FALSE(manager.RemoveExtension(key_b1));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(1U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+
+ EXPECT_TRUE(manager.RemoveExtension(key_a1));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+ EXPECT_FALSE(manager.RemoveExtension(key_a1));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_MESSAGES));
+ EXPECT_EQ(0U, manager.GetNumActiveExtensionsForSource(LOG_SOURCE_UI_LATEST));
+}
+
+TEST(LogSourceAccessManagerTest, LastAccessTime) {
+ // Specify a long minimum duration between reads to avoid non-deterministic
+ // timing variations between tests. For practical purposes, this means we can
+ // only read from the source once during the lifetime of this test.
+ LogSourceAccessManager manager(base::TimeDelta::FromDays(30));
+
+ const SourceAndExtension key_a0(LOG_SOURCE_MESSAGES, "aaaa");
+ const SourceAndExtension key_a1(LOG_SOURCE_UI_LATEST, "aaaa");
+ const SourceAndExtension key_b0(LOG_SOURCE_MESSAGES, "bbbb");
+ const SourceAndExtension key_b1(LOG_SOURCE_UI_LATEST, "bbbb");
+ const SourceAndExtension key_c0(LOG_SOURCE_MESSAGES, "cccc");
+ const SourceAndExtension key_c1(LOG_SOURCE_UI_LATEST, "cccc");
+
+ // No timestamps present for any of the keys.
+ EXPECT_TRUE(manager.GetLastExtensionAccessTime(key_a0).is_null());
+ EXPECT_TRUE(manager.GetLastExtensionAccessTime(key_a1).is_null());
+ EXPECT_TRUE(manager.GetLastExtensionAccessTime(key_b0).is_null());
+ EXPECT_TRUE(manager.GetLastExtensionAccessTime(key_b1).is_null());
+ EXPECT_TRUE(manager.GetLastExtensionAccessTime(key_c0).is_null());
+ EXPECT_TRUE(manager.GetLastExtensionAccessTime(key_c1).is_null());
+
+ // Access each key for the first time.
+ EXPECT_TRUE(manager.AccessSourceFromExtension(key_a0));
+ EXPECT_TRUE(manager.AccessSourceFromExtension(key_b0));
+ EXPECT_TRUE(manager.AccessSourceFromExtension(key_c0));
+ EXPECT_TRUE(manager.AccessSourceFromExtension(key_a1));
+ EXPECT_TRUE(manager.AccessSourceFromExtension(key_b1));
+ EXPECT_TRUE(manager.AccessSourceFromExtension(key_c1));
+
+ // Each key should now have a last access timestamp.
+ EXPECT_FALSE(manager.GetLastExtensionAccessTime(key_a0).is_null());
+ EXPECT_FALSE(manager.GetLastExtensionAccessTime(key_a1).is_null());
+ EXPECT_FALSE(manager.GetLastExtensionAccessTime(key_b0).is_null());
+ EXPECT_FALSE(manager.GetLastExtensionAccessTime(key_b1).is_null());
+ EXPECT_FALSE(manager.GetLastExtensionAccessTime(key_c0).is_null());
+ EXPECT_FALSE(manager.GetLastExtensionAccessTime(key_c1).is_null());
+
+ // Cannot access them again.
+ EXPECT_FALSE(manager.AccessSourceFromExtension(key_a0));
+ EXPECT_FALSE(manager.AccessSourceFromExtension(key_b0));
+ EXPECT_FALSE(manager.AccessSourceFromExtension(key_c0));
+ EXPECT_FALSE(manager.AccessSourceFromExtension(key_a1));
+ EXPECT_FALSE(manager.AccessSourceFromExtension(key_b1));
+ EXPECT_FALSE(manager.AccessSourceFromExtension(key_c1));
+}
+
+} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698