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

Side by Side Diff: content/browser/service_worker/service_worker_version_unittest.cc

Issue 2778173002: Revert of "Speculatively launch Service Workers on mouse/touch events." (Closed)
Patch Set: rebase Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_version.h" 5 #include "content/browser/service_worker/service_worker_version.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <tuple> 8 #include <tuple>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 1682 matching lines...) Expand 10 before | Expand all | Expand 10 after
1693 1693
1694 // Should not have timed out, so error callback should not have been 1694 // Should not have timed out, so error callback should not have been
1695 // called and FinishRequest should return true. 1695 // called and FinishRequest should return true.
1696 EXPECT_EQ(SERVICE_WORKER_OK, status); 1696 EXPECT_EQ(SERVICE_WORKER_OK, status);
1697 EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */, 1697 EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */,
1698 base::Time::Now())); 1698 base::Time::Now()));
1699 EXPECT_TRUE(version_->FinishRequest(request_id2, true /* was_handled */, 1699 EXPECT_TRUE(version_->FinishRequest(request_id2, true /* was_handled */,
1700 base::Time::Now())); 1700 base::Time::Now()));
1701 } 1701 }
1702 1702
1703 class ServiceWorkerNavigationHintUMATest : public ServiceWorkerVersionTest {
1704 protected:
1705 ServiceWorkerNavigationHintUMATest() : ServiceWorkerVersionTest() {}
1706
1707 void StartWorker(ServiceWorkerMetrics::EventType purpose) {
1708 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
1709 version_->StartWorker(purpose, CreateReceiverOnCurrentThread(&status));
1710 base::RunLoop().RunUntilIdle();
1711 EXPECT_EQ(SERVICE_WORKER_OK, status);
1712 }
1713
1714 void StopWorker() {
1715 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
1716 version_->StopWorker(CreateReceiverOnCurrentThread(&status));
1717 base::RunLoop().RunUntilIdle();
1718 EXPECT_EQ(SERVICE_WORKER_OK, status);
1719 }
1720
1721 void SimpleNavigationHintTest(
1722 ServiceWorkerMetrics::EventType purpose,
1723 const char* changed_historam_name,
1724 const std::vector<const char*>& unchanged_historam_names) {
1725 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
1726 StartWorker(purpose);
1727 StopWorker();
1728 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, true, 0);
1729 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, false, 1);
1730 histogram_tester_.ExpectBucketCount(changed_historam_name, true, 0);
1731 histogram_tester_.ExpectBucketCount(changed_historam_name, false, 1);
1732 for (const char* unchanged_historam_name : unchanged_historam_names)
1733 histogram_tester_.ExpectTotalCount(unchanged_historam_name, 0);
1734
1735 StartWorker(purpose);
1736 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::MESSAGE);
1737 StopWorker();
1738 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, true, 0);
1739 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, false, 2);
1740 histogram_tester_.ExpectBucketCount(changed_historam_name, true, 0);
1741 histogram_tester_.ExpectBucketCount(changed_historam_name, false, 2);
1742 for (const char* unchanged_historam_name : unchanged_historam_names)
1743 histogram_tester_.ExpectTotalCount(unchanged_historam_name, 0);
1744
1745 StartWorker(purpose);
1746 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME);
1747 StopWorker();
1748 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, true, 1);
1749 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, false, 2);
1750 histogram_tester_.ExpectBucketCount(changed_historam_name, true, 1);
1751 histogram_tester_.ExpectBucketCount(changed_historam_name, false, 2);
1752 for (const char* unchanged_historam_name : unchanged_historam_names)
1753 histogram_tester_.ExpectTotalCount(unchanged_historam_name, 0);
1754
1755 StartWorker(purpose);
1756 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::FETCH_SUB_FRAME);
1757 StopWorker();
1758 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, true, 2);
1759 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, false, 2);
1760 histogram_tester_.ExpectBucketCount(changed_historam_name, true, 2);
1761 histogram_tester_.ExpectBucketCount(changed_historam_name, false, 2);
1762 for (const char* unchanged_historam_name : unchanged_historam_names)
1763 histogram_tester_.ExpectTotalCount(unchanged_historam_name, 0);
1764 }
1765
1766 static const char kNavigationHintPrecision[];
1767 static const char kLinkMouseDown[];
1768 static const char kLinkTapUnconfirmed[];
1769 static const char kLinkTapDown[];
1770
1771 base::HistogramTester histogram_tester_;
1772
1773 private:
1774 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerNavigationHintUMATest);
1775 };
1776
1777 const char ServiceWorkerNavigationHintUMATest::kNavigationHintPrecision[] =
1778 "ServiceWorker.NavigationHintPrecision";
1779 const char ServiceWorkerNavigationHintUMATest::kLinkMouseDown[] =
1780 "ServiceWorker.NavigationHintPrecision.LINK_MOUSE_DOWN";
1781 const char ServiceWorkerNavigationHintUMATest::kLinkTapUnconfirmed[] =
1782 "ServiceWorker.NavigationHintPrecision.LINK_TAP_UNCONFIRMED";
1783 const char ServiceWorkerNavigationHintUMATest::kLinkTapDown[] =
1784 "ServiceWorker.NavigationHintPrecision.LINK_TAP_DOWN";
1785
1786 TEST_F(ServiceWorkerNavigationHintUMATest, LinkMouseDown) {
1787 SimpleNavigationHintTest(
1788 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN,
1789 kLinkMouseDown, {kLinkTapUnconfirmed, kLinkTapDown});
1790 }
1791
1792 TEST_F(ServiceWorkerNavigationHintUMATest, LinkTapUnconfirmed) {
1793 SimpleNavigationHintTest(
1794 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_UNCONFIRMED,
1795 kLinkTapUnconfirmed, {kLinkMouseDown, kLinkTapDown});
1796 }
1797
1798 TEST_F(ServiceWorkerNavigationHintUMATest, LinkTapDown) {
1799 SimpleNavigationHintTest(
1800 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_DOWN,
1801 kLinkTapDown, {kLinkMouseDown, kLinkTapUnconfirmed});
1802 }
1803
1804 TEST_F(ServiceWorkerNavigationHintUMATest, ConcurrentStart) {
1805 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
1806 ServiceWorkerStatusCode status1 = SERVICE_WORKER_ERROR_MAX_VALUE;
1807 ServiceWorkerStatusCode status2 = SERVICE_WORKER_ERROR_MAX_VALUE;
1808 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
1809 CreateReceiverOnCurrentThread(&status1));
1810 version_->StartWorker(
1811 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN,
1812 CreateReceiverOnCurrentThread(&status2));
1813 base::RunLoop().RunUntilIdle();
1814 EXPECT_EQ(SERVICE_WORKER_OK, status1);
1815 EXPECT_EQ(SERVICE_WORKER_OK, status2);
1816 StopWorker();
1817 // The first purpose of starting worker was not a navigation hint.
1818 histogram_tester_.ExpectTotalCount(kNavigationHintPrecision, 0);
1819
1820 status1 = SERVICE_WORKER_ERROR_MAX_VALUE;
1821 status2 = SERVICE_WORKER_ERROR_MAX_VALUE;
1822 version_->StartWorker(
1823 ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN,
1824 CreateReceiverOnCurrentThread(&status2));
1825 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
1826 CreateReceiverOnCurrentThread(&status1));
1827 base::RunLoop().RunUntilIdle();
1828 EXPECT_EQ(SERVICE_WORKER_OK, status1);
1829 EXPECT_EQ(SERVICE_WORKER_OK, status2);
1830 SimulateDispatchEvent(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME);
1831 StopWorker();
1832 // The first purpose of starting worker was a navigation hint.
1833 histogram_tester_.ExpectTotalCount(kNavigationHintPrecision, 1);
1834 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, true, 1);
1835 histogram_tester_.ExpectBucketCount(kNavigationHintPrecision, false, 0);
1836 }
1837
1838 TEST_F(ServiceWorkerNavigationHintUMATest, StartWhileStopping) {
1839 StartWorker(ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_MOUSE_DOWN);
1840 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
1841 version_->StopWorker(CreateReceiverOnCurrentThread(&status));
1842 EXPECT_EQ(EmbeddedWorkerStatus::STOPPING, version_->running_status());
1843 histogram_tester_.ExpectTotalCount(kLinkMouseDown, 0);
1844
1845 StartWorker(ServiceWorkerMetrics::EventType::NAVIGATION_HINT_LINK_TAP_DOWN);
1846 // The UMA for kLinkMouseDown must be recorded while restarting.
1847 histogram_tester_.ExpectTotalCount(kLinkMouseDown, 1);
1848 histogram_tester_.ExpectTotalCount(kLinkTapDown, 0);
1849 EXPECT_EQ(SERVICE_WORKER_OK, status);
1850 StopWorker();
1851 // The UMA for kLinkMouseDown must be recorded when the worker stopped.
1852 histogram_tester_.ExpectTotalCount(kLinkMouseDown, 1);
1853 histogram_tester_.ExpectTotalCount(kLinkTapDown, 1);
1854 }
1855
1856 } // namespace content 1703 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_version.cc ('k') | content/child/runtime_features.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698