Index: extensions/browser/event_router_unittest.cc |
diff --git a/extensions/browser/event_router_unittest.cc b/extensions/browser/event_router_unittest.cc |
index ff5d5db0d1ab022e226715f0ab72451416430ac6..f662a909c7029a6eef32da1c76d37633707888f9 100644 |
--- a/extensions/browser/event_router_unittest.cc |
+++ b/extensions/browser/event_router_unittest.cc |
@@ -8,12 +8,17 @@ |
#include "base/bind.h" |
#include "base/compiler_specific.h" |
+#include "base/test/histogram_tester.h" |
#include "base/macros.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/values.h" |
#include "content/public/browser/notification_service.h" |
+#include "content/public/test/test_browser_thread_bundle.h" |
#include "extensions/browser/event_listener_map.h" |
#include "extensions/browser/extensions_test.h" |
+#include "extensions/common/extension_builder.h" |
+#include "extensions/common/test_util.h" |
+#include "extensions/common/value_builder.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace extensions { |
@@ -81,6 +86,14 @@ scoped_ptr<EventListener> CreateEventListenerForURL( |
event_name, listener_url, process, make_scoped_ptr(filter)); |
} |
+scoped_ptr<base::DictionaryValue> CreateBackgroundManifest(bool persistent) { |
+ scoped_ptr<base::DictionaryValue> manifest = |
+ make_scoped_ptr(new base::DictionaryValue()); |
+ manifest->SetString("background.page", "background.html"); |
+ manifest->SetBoolean("background.persistent", persistent); |
+ return manifest; |
imcheng
2016/01/20 18:28:21
It should compile if you changed this to:
std::mo
mark a. foltz
2016/01/20 21:58:07
Thanks! That was the fix. It isn't clear to me y
|
+} |
+ |
} // namespace |
class EventRouterTest : public ExtensionsTest { |
@@ -92,8 +105,52 @@ class EventRouterTest : public ExtensionsTest { |
// Tests adding and removing observers from EventRouter. |
void RunEventRouterObserverTest(const EventListenerConstructor& constructor); |
+ // Tests that the correct counts are recorded for the Extensions.Events |
+ // histograms. |
+ void ExpectHistogramCounts(int dispatch_count, int component_count, |
+ int persistent_count, int suspended_count, |
+ int component_suspended_count, int running_count) { |
+ if (dispatch_count) { |
+ histogram_tester_.ExpectBucketCount("Extensions.Events.Dispatch", |
+ events::HistogramValue::FOR_TEST, |
+ dispatch_count); |
+ } |
+ if (component_count) { |
+ histogram_tester_.ExpectBucketCount( |
+ "Extensions.Events.DispatchToComponent", |
+ events::HistogramValue::FOR_TEST, |
+ component_count); |
+ } |
+ if (persistent_count) { |
+ histogram_tester_.ExpectBucketCount( |
+ "Extensions.Events.DispatchWithPersistentBackgroundPage", |
+ events::HistogramValue::FOR_TEST, |
+ persistent_count); |
+ } |
+ if (suspended_count) { |
+ histogram_tester_.ExpectBucketCount( |
+ "Extensions.Events.DispatchWithSuspendedEventPage", |
+ events::HistogramValue::FOR_TEST, |
+ suspended_count); |
+ } |
+ if (component_suspended_count) { |
+ histogram_tester_.ExpectBucketCount( |
+ "Extensions.Events.DispatchToComponentWithSuspendedEventPage", |
+ events::HistogramValue::FOR_TEST, |
+ component_suspended_count); |
+ } |
+ if (running_count) { |
+ histogram_tester_.ExpectBucketCount( |
+ "Extensions.Events.DispatchWithRunningEventPage", |
+ events::HistogramValue::FOR_TEST, |
+ running_count); |
+ } |
+ } |
+ |
private: |
scoped_ptr<content::NotificationService> notification_service_; |
+ content::TestBrowserThreadBundle thread_bundle_; |
+ base::HistogramTester histogram_tester_; |
DISALLOW_COPY_AND_ASSIGN(EventRouterTest); |
}; |
@@ -171,4 +228,62 @@ TEST_F(EventRouterTest, EventRouterObserverForURLs) { |
base::Bind(&CreateEventListenerForURL, GURL("http://google.com/path"))); |
} |
+TEST_F(EventRouterTest, TestReportEvent) { |
+ EventRouter router(browser_context(), NULL); |
+ // TODO: Create component extensions w/ and w/out lazy background page |
+ // Use ExtensionBuilder. |
+ scoped_refptr<Extension> normal = test_util::CreateEmptyExtension("id1"); |
+ router.ReportEvent(events::HistogramValue::FOR_TEST, |
+ normal.get(), |
+ false /** did_enqueue */); |
+ ExpectHistogramCounts(1 /** Dispatch */, |
+ 0 /** DispatchToComponent */, |
+ 0 /** DispatchWithPersistentBackgroundPage */, |
+ 0 /** DispatchWithSuspendedEventPage */, |
+ 0 /** DispatchToComponentWithSuspendedEventPage */, |
+ 0 /** DispatchWithRunningEventPage */); |
+ |
+ ExtensionBuilder component_builder; |
+ scoped_refptr<Extension> component = component_builder. |
+ SetLocation(Manifest::Location::COMPONENT).Build(); |
+ router.ReportEvent(events::HistogramValue::FOR_TEST, |
+ component.get(), |
+ false /** did_enqueue */); |
+ ExpectHistogramCounts(2, 1, 0, 0, 0, 0); |
+ |
+ ExtensionBuilder persistent_builder; |
+ scoped_ptr<base::DictionaryValue> persistent_manifest = |
+ CreateBackgroundManifest(true); |
+ |
+ scoped_refptr<Extension> persistent = persistent_builder. |
+ SetManifest(persistent_manifest).Build(); |
+ router.ReportEvent(events::HistogramValue::FOR_TEST, |
+ persistent.get(), |
+ false /** did_enqueue */); |
+ ExpectHistogramCounts(3, 1, 1, 0, 0, 0); |
+ |
+ // ExtensionBuilder event_builder; |
+ // scoped_refptr<Extension> event = event_builder. |
+ // SetManifest(CreateBackgroundManifest(false)).Build(); |
+ // router.ReportEvent(events::HistogramValue::FOR_TEST, |
+ // event.get(), |
+ // false /** did_enqueue */); |
+ // router.ReportEvent(events::HistogramValue::FOR_TEST, |
+ // event.get(), |
+ // true /** did_enqueue */); |
+ // ExpectHistogramCounts(4, 1, 1, 1, 0, 1); |
+ |
+ // ExtensionBuilder component_event_builder; |
+ // scoped_refptr<Extension> component_event = component_event_builder. |
+ // SetLocation(Manifest::Location::COMPONENT). |
+ // SetManifest(CreateBackgroundManifest(false)).Build(); |
+ // router.ReportEvent(events::HistogramValue::FOR_TEST, |
+ // component_event.get(), |
+ // false /** did_enqueue */); |
+ // router.ReportEvent(events::HistogramValue::FOR_TEST, |
+ // component_event.get(), |
+ // true /** did_enqueue */); |
+ // ExpectHistogramCounts(5, 2, 1, 2, 1, 2); |
+} |
+ |
} // namespace extensions |