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

Unified Diff: third_party/WebKit/Source/core/workers/DedicatedWorkerTest.cpp

Issue 2857583003: Worker: Avoid sending IPC messages for features already counted (Closed)
Patch Set: wip 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/workers/InProcessWorkerObjectProxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/workers/DedicatedWorkerTest.cpp
diff --git a/third_party/WebKit/Source/core/workers/DedicatedWorkerTest.cpp b/third_party/WebKit/Source/core/workers/DedicatedWorkerTest.cpp
index 779c340141626a5338f1248625e9005a91775849..6bf37ce78099d6cf8de457f0d59c74324b02ac9c 100644
--- a/third_party/WebKit/Source/core/workers/DedicatedWorkerTest.cpp
+++ b/third_party/WebKit/Source/core/workers/DedicatedWorkerTest.cpp
@@ -67,7 +67,6 @@ class DedicatedWorkerThreadForTest final : public DedicatedWorkerThread {
// Emulates deprecated API use on DedicatedWorkerGlobalScope.
void CountDeprecation(UseCounter::Feature feature) {
EXPECT_TRUE(IsCurrentThread());
- EXPECT_EQ(0u, GetConsoleMessageStorage()->size());
GlobalScope()->CountDeprecation(feature);
// countDeprecation() should add a warning message.
@@ -81,6 +80,38 @@ class DedicatedWorkerThreadForTest final : public DedicatedWorkerThread {
}
};
+class InProcessWorkerObjectProxyForTest final
+ : public InProcessWorkerObjectProxy {
+ public:
+ InProcessWorkerObjectProxyForTest(
+ const WeakPtr<InProcessWorkerMessagingProxy>& messaging_proxy_weak_ptr,
+ ParentFrameTaskRunners* parent_frame_task_runners)
+ : InProcessWorkerObjectProxy(messaging_proxy_weak_ptr,
+ parent_frame_task_runners),
+ reported_features_(UseCounter::kNumberOfFeatures) {
+ default_interval_in_sec_ = kDefaultIntervalInSec;
+ next_interval_in_sec_ = kNextIntervalInSec;
+ max_interval_in_sec_ = kMaxIntervalInSec;
+ }
+
+ void CountFeature(UseCounter::Feature feature) override {
+ // Any feature should be reported only one time.
+ EXPECT_FALSE(reported_features_.QuickGet(feature));
+ reported_features_.QuickSet(feature);
+ InProcessWorkerObjectProxy::CountFeature(feature);
+ }
+
+ void CountDeprecation(UseCounter::Feature feature) override {
+ // Any feature should be reported only one time.
+ EXPECT_FALSE(reported_features_.QuickGet(feature));
+ reported_features_.QuickSet(feature);
+ InProcessWorkerObjectProxy::CountDeprecation(feature);
+ }
+
+ private:
+ BitVector reported_features_;
+};
+
class InProcessWorkerMessagingProxyForTest
: public InProcessWorkerMessagingProxy {
public:
@@ -88,10 +119,8 @@ class InProcessWorkerMessagingProxyForTest
: InProcessWorkerMessagingProxy(execution_context,
nullptr /* workerObject */,
nullptr /* workerClients */) {
- WorkerObjectProxy().default_interval_in_sec_ = kDefaultIntervalInSec;
- WorkerObjectProxy().next_interval_in_sec_ = kNextIntervalInSec;
- WorkerObjectProxy().max_interval_in_sec_ = kMaxIntervalInSec;
-
+ worker_object_proxy_ = WTF::MakeUnique<InProcessWorkerObjectProxyForTest>(
+ weak_ptr_factory_.CreateWeakPtr(), GetParentFrameTaskRunners());
worker_loader_proxy_provider_ =
WTF::MakeUnique<WorkerLoaderProxyProvider>();
worker_thread_ = WTF::WrapUnique(new DedicatedWorkerThreadForTest(
@@ -399,6 +428,15 @@ TEST_F(DedicatedWorkerTest, UseCounter) {
testing::EnterRunLoop();
EXPECT_TRUE(UseCounter::IsCounted(GetDocument(), kFeature1));
+ // API use should be reported to the Document only one time. See comments in
+ // InProcessWorkerObjectProxyForTest::CountFeature.
+ TaskRunnerHelper::Get(TaskType::kUnspecedTimer, GetWorkerThread())
+ ->PostTask(
+ BLINK_FROM_HERE,
+ CrossThreadBind(&DedicatedWorkerThreadForTest::CountFeature,
+ CrossThreadUnretained(GetWorkerThread()), kFeature1));
+ testing::EnterRunLoop();
+
// This feature is randomly selected from Deprecation::deprecationMessage().
const UseCounter::Feature kFeature2 =
UseCounter::Feature::kPrefixedStorageInfo;
@@ -413,6 +451,15 @@ TEST_F(DedicatedWorkerTest, UseCounter) {
CrossThreadUnretained(GetWorkerThread()), kFeature2));
testing::EnterRunLoop();
EXPECT_TRUE(UseCounter::IsCounted(GetDocument(), kFeature2));
+
+ // API use should be reported to the Document only one time. See comments in
+ // InProcessWorkerObjectProxyForTest::CountDeprecation.
+ TaskRunnerHelper::Get(TaskType::kUnspecedTimer, GetWorkerThread())
+ ->PostTask(
+ BLINK_FROM_HERE,
+ CrossThreadBind(&DedicatedWorkerThreadForTest::CountDeprecation,
+ CrossThreadUnretained(GetWorkerThread()), kFeature2));
+ testing::EnterRunLoop();
}
} // namespace blink
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/workers/InProcessWorkerObjectProxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698