| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <memory> | 5 #include <memory> |
| 6 #include "core/dom/TaskRunnerHelper.h" | 6 #include "core/dom/TaskRunnerHelper.h" |
| 7 #include "core/events/MessageEvent.h" | 7 #include "core/events/MessageEvent.h" |
| 8 #include "core/inspector/ConsoleMessageStorage.h" | 8 #include "core/inspector/ConsoleMessageStorage.h" |
| 9 #include "core/testing/DummyPageHolder.h" | 9 #include "core/testing/DummyPageHolder.h" |
| 10 #include "core/workers/DedicatedWorkerGlobalScope.h" | 10 #include "core/workers/DedicatedWorkerGlobalScope.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 EXPECT_TRUE(IsCurrentThread()); | 60 EXPECT_TRUE(IsCurrentThread()); |
| 61 GlobalScope()->CountFeature(feature); | 61 GlobalScope()->CountFeature(feature); |
| 62 GetParentFrameTaskRunners() | 62 GetParentFrameTaskRunners() |
| 63 ->Get(TaskType::kUnspecedTimer) | 63 ->Get(TaskType::kUnspecedTimer) |
| 64 ->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop)); | 64 ->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop)); |
| 65 } | 65 } |
| 66 | 66 |
| 67 // Emulates deprecated API use on DedicatedWorkerGlobalScope. | 67 // Emulates deprecated API use on DedicatedWorkerGlobalScope. |
| 68 void CountDeprecation(UseCounter::Feature feature) { | 68 void CountDeprecation(UseCounter::Feature feature) { |
| 69 EXPECT_TRUE(IsCurrentThread()); | 69 EXPECT_TRUE(IsCurrentThread()); |
| 70 EXPECT_EQ(0u, GetConsoleMessageStorage()->size()); | |
| 71 GlobalScope()->CountDeprecation(feature); | 70 GlobalScope()->CountDeprecation(feature); |
| 72 | 71 |
| 73 // countDeprecation() should add a warning message. | 72 // countDeprecation() should add a warning message. |
| 74 EXPECT_EQ(1u, GetConsoleMessageStorage()->size()); | 73 EXPECT_EQ(1u, GetConsoleMessageStorage()->size()); |
| 75 String console_message = GetConsoleMessageStorage()->at(0)->Message(); | 74 String console_message = GetConsoleMessageStorage()->at(0)->Message(); |
| 76 EXPECT_TRUE(console_message.Contains("deprecated")); | 75 EXPECT_TRUE(console_message.Contains("deprecated")); |
| 77 | 76 |
| 78 GetParentFrameTaskRunners() | 77 GetParentFrameTaskRunners() |
| 79 ->Get(TaskType::kUnspecedTimer) | 78 ->Get(TaskType::kUnspecedTimer) |
| 80 ->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop)); | 79 ->PostTask(BLINK_FROM_HERE, CrossThreadBind(&testing::ExitRunLoop)); |
| 81 } | 80 } |
| 82 }; | 81 }; |
| 83 | 82 |
| 83 class InProcessWorkerObjectProxyForTest final |
| 84 : public InProcessWorkerObjectProxy { |
| 85 public: |
| 86 InProcessWorkerObjectProxyForTest( |
| 87 const WeakPtr<InProcessWorkerMessagingProxy>& messaging_proxy_weak_ptr, |
| 88 ParentFrameTaskRunners* parent_frame_task_runners) |
| 89 : InProcessWorkerObjectProxy(messaging_proxy_weak_ptr, |
| 90 parent_frame_task_runners), |
| 91 reported_features_(UseCounter::kNumberOfFeatures) { |
| 92 default_interval_in_sec_ = kDefaultIntervalInSec; |
| 93 next_interval_in_sec_ = kNextIntervalInSec; |
| 94 max_interval_in_sec_ = kMaxIntervalInSec; |
| 95 } |
| 96 |
| 97 void CountFeature(UseCounter::Feature feature) override { |
| 98 // Any feature should be reported only one time. |
| 99 EXPECT_FALSE(reported_features_.QuickGet(feature)); |
| 100 reported_features_.QuickSet(feature); |
| 101 InProcessWorkerObjectProxy::CountFeature(feature); |
| 102 } |
| 103 |
| 104 void CountDeprecation(UseCounter::Feature feature) override { |
| 105 // Any feature should be reported only one time. |
| 106 EXPECT_FALSE(reported_features_.QuickGet(feature)); |
| 107 reported_features_.QuickSet(feature); |
| 108 InProcessWorkerObjectProxy::CountDeprecation(feature); |
| 109 } |
| 110 |
| 111 private: |
| 112 BitVector reported_features_; |
| 113 }; |
| 114 |
| 84 class InProcessWorkerMessagingProxyForTest | 115 class InProcessWorkerMessagingProxyForTest |
| 85 : public InProcessWorkerMessagingProxy { | 116 : public InProcessWorkerMessagingProxy { |
| 86 public: | 117 public: |
| 87 InProcessWorkerMessagingProxyForTest(ExecutionContext* execution_context) | 118 InProcessWorkerMessagingProxyForTest(ExecutionContext* execution_context) |
| 88 : InProcessWorkerMessagingProxy(execution_context, | 119 : InProcessWorkerMessagingProxy(execution_context, |
| 89 nullptr /* workerObject */, | 120 nullptr /* workerObject */, |
| 90 nullptr /* workerClients */) { | 121 nullptr /* workerClients */) { |
| 91 WorkerObjectProxy().default_interval_in_sec_ = kDefaultIntervalInSec; | 122 worker_object_proxy_ = WTF::MakeUnique<InProcessWorkerObjectProxyForTest>( |
| 92 WorkerObjectProxy().next_interval_in_sec_ = kNextIntervalInSec; | 123 weak_ptr_factory_.CreateWeakPtr(), GetParentFrameTaskRunners()); |
| 93 WorkerObjectProxy().max_interval_in_sec_ = kMaxIntervalInSec; | |
| 94 | |
| 95 worker_loader_proxy_provider_ = | 124 worker_loader_proxy_provider_ = |
| 96 WTF::MakeUnique<WorkerLoaderProxyProvider>(); | 125 WTF::MakeUnique<WorkerLoaderProxyProvider>(); |
| 97 worker_thread_ = WTF::WrapUnique(new DedicatedWorkerThreadForTest( | 126 worker_thread_ = WTF::WrapUnique(new DedicatedWorkerThreadForTest( |
| 98 worker_loader_proxy_provider_.get(), WorkerObjectProxy())); | 127 worker_loader_proxy_provider_.get(), WorkerObjectProxy())); |
| 99 mock_worker_thread_lifecycle_observer_ = | 128 mock_worker_thread_lifecycle_observer_ = |
| 100 new MockWorkerThreadLifecycleObserver( | 129 new MockWorkerThreadLifecycleObserver( |
| 101 worker_thread_->GetWorkerThreadLifecycleContext()); | 130 worker_thread_->GetWorkerThreadLifecycleContext()); |
| 102 EXPECT_CALL(*mock_worker_thread_lifecycle_observer_, | 131 EXPECT_CALL(*mock_worker_thread_lifecycle_observer_, |
| 103 ContextDestroyed(::testing::_)) | 132 ContextDestroyed(::testing::_)) |
| 104 .Times(1); | 133 .Times(1); |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 // on the Document. | 421 // on the Document. |
| 393 EXPECT_FALSE(UseCounter::IsCounted(GetDocument(), kFeature1)); | 422 EXPECT_FALSE(UseCounter::IsCounted(GetDocument(), kFeature1)); |
| 394 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, GetWorkerThread()) | 423 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, GetWorkerThread()) |
| 395 ->PostTask( | 424 ->PostTask( |
| 396 BLINK_FROM_HERE, | 425 BLINK_FROM_HERE, |
| 397 CrossThreadBind(&DedicatedWorkerThreadForTest::CountFeature, | 426 CrossThreadBind(&DedicatedWorkerThreadForTest::CountFeature, |
| 398 CrossThreadUnretained(GetWorkerThread()), kFeature1)); | 427 CrossThreadUnretained(GetWorkerThread()), kFeature1)); |
| 399 testing::EnterRunLoop(); | 428 testing::EnterRunLoop(); |
| 400 EXPECT_TRUE(UseCounter::IsCounted(GetDocument(), kFeature1)); | 429 EXPECT_TRUE(UseCounter::IsCounted(GetDocument(), kFeature1)); |
| 401 | 430 |
| 431 // API use should be reported to the Document only one time. See comments in |
| 432 // InProcessWorkerObjectProxyForTest::CountFeature. |
| 433 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, GetWorkerThread()) |
| 434 ->PostTask( |
| 435 BLINK_FROM_HERE, |
| 436 CrossThreadBind(&DedicatedWorkerThreadForTest::CountFeature, |
| 437 CrossThreadUnretained(GetWorkerThread()), kFeature1)); |
| 438 testing::EnterRunLoop(); |
| 439 |
| 402 // This feature is randomly selected from Deprecation::deprecationMessage(). | 440 // This feature is randomly selected from Deprecation::deprecationMessage(). |
| 403 const UseCounter::Feature kFeature2 = | 441 const UseCounter::Feature kFeature2 = |
| 404 UseCounter::Feature::kPrefixedStorageInfo; | 442 UseCounter::Feature::kPrefixedStorageInfo; |
| 405 | 443 |
| 406 // Deprecated API use on the DedicatedWorkerGlobalScope should be recorded in | 444 // Deprecated API use on the DedicatedWorkerGlobalScope should be recorded in |
| 407 // UseCounter on the Document. | 445 // UseCounter on the Document. |
| 408 EXPECT_FALSE(UseCounter::IsCounted(GetDocument(), kFeature2)); | 446 EXPECT_FALSE(UseCounter::IsCounted(GetDocument(), kFeature2)); |
| 409 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, GetWorkerThread()) | 447 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, GetWorkerThread()) |
| 410 ->PostTask( | 448 ->PostTask( |
| 411 BLINK_FROM_HERE, | 449 BLINK_FROM_HERE, |
| 412 CrossThreadBind(&DedicatedWorkerThreadForTest::CountDeprecation, | 450 CrossThreadBind(&DedicatedWorkerThreadForTest::CountDeprecation, |
| 413 CrossThreadUnretained(GetWorkerThread()), kFeature2)); | 451 CrossThreadUnretained(GetWorkerThread()), kFeature2)); |
| 414 testing::EnterRunLoop(); | 452 testing::EnterRunLoop(); |
| 415 EXPECT_TRUE(UseCounter::IsCounted(GetDocument(), kFeature2)); | 453 EXPECT_TRUE(UseCounter::IsCounted(GetDocument(), kFeature2)); |
| 454 |
| 455 // API use should be reported to the Document only one time. See comments in |
| 456 // InProcessWorkerObjectProxyForTest::CountDeprecation. |
| 457 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, GetWorkerThread()) |
| 458 ->PostTask( |
| 459 BLINK_FROM_HERE, |
| 460 CrossThreadBind(&DedicatedWorkerThreadForTest::CountDeprecation, |
| 461 CrossThreadUnretained(GetWorkerThread()), kFeature2)); |
| 462 testing::EnterRunLoop(); |
| 416 } | 463 } |
| 417 | 464 |
| 418 } // namespace blink | 465 } // namespace blink |
| OLD | NEW |