Index: chrome/browser/extensions/api/notifications/extension_notification_handler_unittest.cc |
diff --git a/chrome/browser/extensions/api/notifications/extension_notification_handler_unittest.cc b/chrome/browser/extensions/api/notifications/extension_notification_handler_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..239e8681b72086505856271afa1705dc15a1ef6d |
--- /dev/null |
+++ b/chrome/browser/extensions/api/notifications/extension_notification_handler_unittest.cc |
@@ -0,0 +1,98 @@ |
+// 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 <string> |
+ |
+#include "base/strings/nullable_string16.h" |
+#include "chrome/browser/extensions/api/notifications/extension_notification_handler.h" |
+#include "chrome/browser/profiles/profile.h" |
+#include "chrome/test/base/testing_browser_process.h" |
+#include "chrome/test/base/testing_profile.h" |
+#include "chrome/test/base/testing_profile_manager.h" |
+#include "content/public/test/test_browser_thread_bundle.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace extensions { |
+namespace { |
+ |
+static const char kChromeExtensionOrigin[] = |
+ "chrome-extension://gclcddgeeaknflkijpcbplmhbkonmlij/"; |
+static const char kChromeExtensionId[] = "gclcddgeeaknflkijpcbplmhbkonmlij"; |
+static const char kChromeNotificationId[] = |
+ "gclcddgeeaknflkijpcbplmhbkonmlij-id1"; |
+ |
+class TestExtensionNotificationHandler : public ExtensionNotificationHandler { |
+ public: |
+ // Set expected arguments for this test handler. |
+ void SetTestExpectations(const std::string& extension_id, |
+ const std::string& event_name, |
+ size_t param_count) { |
+ extension_id_ = extension_id; |
+ event_name_ = event_name; |
+ param_count_ = param_count; |
+ } |
+ |
+ protected: |
+ void SendEvent(Profile* profile, |
+ const std::string& extension_id, |
+ events::HistogramValue histogram_value, |
+ const std::string& event_name, |
+ EventRouter::UserGestureState user_gesture, |
+ std::unique_ptr<base::ListValue> args) final { |
+ EXPECT_EQ(event_name_, event_name); |
+ EXPECT_EQ(extension_id_, extension_id); |
+ EXPECT_EQ(param_count_, args->GetSize()); |
+ } |
+ |
+ private: |
+ std::string extension_id_; |
+ std::string event_name_; |
+ size_t param_count_; |
+}; |
+} // namespace |
+ |
+class ExtensionNotificationHandlerTest : public testing::Test { |
+ public: |
+ ExtensionNotificationHandlerTest() |
+ : thread_bundle_(content::TestBrowserThreadBundle::DEFAULT) {} |
+ |
+ private: |
+ content::TestBrowserThreadBundle thread_bundle_; |
+}; |
+ |
+TEST_F(ExtensionNotificationHandlerTest, CloseHandler) { |
+ EXPECT_TRUE(true); |
+ TestingProfile::Builder builder; |
+ std::unique_ptr<TestingProfile> profile = builder.Build(); |
+ |
+ TestExtensionNotificationHandler handler; |
+ handler.SetTestExpectations(kChromeExtensionId, "notifications.onClosed", 2); |
+ handler.OnClose(profile.get(), kChromeExtensionOrigin, kChromeNotificationId, |
+ false); |
+} |
+ |
+TEST_F(ExtensionNotificationHandlerTest, ClickHandler) { |
+ EXPECT_TRUE(true); |
+ TestingProfile::Builder builder; |
+ std::unique_ptr<TestingProfile> profile = builder.Build(); |
+ |
+ TestExtensionNotificationHandler handler; |
+ handler.SetTestExpectations(kChromeExtensionId, "notifications.onClicked", 1); |
+ handler.OnClick(profile.get(), kChromeExtensionOrigin, kChromeNotificationId, |
+ -1, base::NullableString16() /* reply */); |
+} |
+ |
+TEST_F(ExtensionNotificationHandlerTest, ClickHandlerButton) { |
+ EXPECT_TRUE(true); |
+ TestingProfile::Builder builder; |
+ std::unique_ptr<TestingProfile> profile = builder.Build(); |
+ |
+ TestExtensionNotificationHandler handler; |
+ handler.SetTestExpectations(kChromeExtensionId, |
+ "notifications.onButtonClicked", 2); |
+ handler.OnClick(profile.get(), kChromeExtensionOrigin, kChromeNotificationId, |
+ 1, base::NullableString16() /* reply */); |
+} |
+ |
+} // namespace extensions |