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

Unified Diff: third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp

Issue 1384913002: Revert of Don't report promise rejection events during the microtask checkpoint (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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
Index: third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
diff --git a/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp b/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
index e88c277eb7a4b4a7eebe4782af8811efe5afd822..3ed8d247ee5d1659fbe25554de1e4a079984cff1 100644
--- a/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
@@ -15,12 +15,6 @@
#include "core/inspector/ConsoleMessage.h"
#include "core/inspector/ScriptArguments.h"
#include "platform/RuntimeEnabledFeatures.h"
-#include "platform/Task.h"
-#include "public/platform/Platform.h"
-#include "public/platform/WebScheduler.h"
-#include "public/platform/WebTaskRunner.h"
-#include "public/platform/WebThread.h"
-#include "wtf/Functional.h"
namespace blink {
@@ -65,7 +59,7 @@
// Either collected or https://crbug.com/450330
if (value.IsEmpty() || !value->IsPromise())
return;
- ASSERT(!hasHandler());
+ ASSERT(!v8::Local<v8::Promise>::Cast(value)->HasHandler());
EventTarget* target = executionContext->errorEventTarget();
if (RuntimeEnabledFeatures::promiseRejectionEventEnabled() && target) {
@@ -128,27 +122,6 @@
consoleMessage->setRelatedMessageId(m_consoleMessageId);
executionContext->addConsoleMessage(consoleMessage.release());
}
- }
-
- void makePromiseWeak()
- {
- ASSERT(!m_promise.isEmpty() && !m_promise.isWeak());
- m_promise.setWeak(this, &Message::didCollectPromise);
- }
-
- void makePromiseStrong()
- {
- ASSERT(!m_promise.isEmpty() && m_promise.isWeak());
- m_promise.clearWeak();
- }
-
- bool hasHandler()
- {
- if (isCollected())
- return false;
- ScriptState::Scope scope(m_scriptState);
- v8::Local<v8::Value> value = m_promise.newLocal(m_scriptState->isolate());
- return v8::Local<v8::Promise>::Cast(value)->HasHandler();
}
private:
@@ -166,6 +139,7 @@
, m_collected(false)
, m_shouldLogToConsole(true)
{
+ m_promise.setWeak(this, &Message::didCollectPromise);
}
static void didCollectPromise(const v8::WeakCallbackInfo<Message>& data)
@@ -219,8 +193,7 @@
for (size_t i = 0; i < m_reportedAsErrors.size(); ++i) {
auto& message = m_reportedAsErrors.at(i);
if (!message->isCollected() && message->hasPromise(data.GetPromise())) {
- message->makePromiseStrong();
- Platform::current()->currentThread()->scheduler()->timerTaskRunner()->postTask(FROM_HERE, new Task(bind(&RejectedPromises::revokeNow, this, message.release())));
+ message->revoke();
m_reportedAsErrors.remove(i);
return;
}
@@ -229,23 +202,10 @@
void RejectedPromises::dispose()
{
- if (!m_queue.isEmpty()) {
- OwnPtrWillBeRawPtr<WillBeHeapDeque<OwnPtrWillBeMember<Message>>> queue = adoptPtr(new WillBeHeapDeque<OwnPtrWillBeMember<Message>>());
- queue->swap(m_queue);
- processQueueNow(queue.release());
- }
+ processQueue();
}
void RejectedPromises::processQueue()
-{
- if (m_queue.isEmpty())
- return;
- OwnPtrWillBeRawPtr<WillBeHeapDeque<OwnPtrWillBeMember<Message>>> queue = adoptPtr(new WillBeHeapDeque<OwnPtrWillBeMember<Message>>());
- queue->swap(m_queue);
- Platform::current()->currentThread()->scheduler()->timerTaskRunner()->postTask(FROM_HERE, new Task(bind(&RejectedPromises::processQueueNow, this, queue.release())));
-}
-
-void RejectedPromises::processQueueNow(PassOwnPtrWillBeRawPtr<WillBeHeapDeque<OwnPtrWillBeMember<Message>>> queue)
{
// Remove collected handlers.
for (size_t i = 0; i < m_reportedAsErrors.size();) {
@@ -255,21 +215,16 @@
++i;
}
- while (!queue->isEmpty()) {
- OwnPtrWillBeRawPtr<Message> message = queue->takeFirst();
- if (!message->hasHandler()) {
- message->report();
- message->makePromiseWeak();
- m_reportedAsErrors.append(message.release());
- if (m_reportedAsErrors.size() > maxReportedHandlersPendingResolution)
- m_reportedAsErrors.remove(0, maxReportedHandlersPendingResolution / 10);
- }
- }
-}
-
-void RejectedPromises::revokeNow(PassOwnPtrWillBeRawPtr<Message> message)
-{
- message->revoke();
+ while (!m_queue.isEmpty()) {
+ OwnPtrWillBeRawPtr<Message> message = m_queue.takeFirst();
+ if (message->isCollected())
+ continue;
+
+ message->report();
+ m_reportedAsErrors.append(message.release());
+ if (m_reportedAsErrors.size() > maxReportedHandlersPendingResolution)
+ m_reportedAsErrors.remove(0, maxReportedHandlersPendingResolution / 10);
+ }
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698