Index: third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp |
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp b/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp |
index 119ebc11724f619c1c2c255d55614b3697a294bf..1a7865a8d8ce0dc72c5dcce59e8f8fa1efaaeda6 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp |
+++ b/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp |
@@ -237,9 +237,10 @@ static void promiseRejectHandlerInMainThread(v8::PromiseRejectMessage data) |
int columnNumber = 0; |
String resourceName; |
String errorMessage; |
+ AccessControlStatus corsStatus = NotSharableCrossOrigin; |
RefPtrWillBeRawPtr<ScriptCallStack> callStack = nullptr; |
- v8::Local<v8::Message> message = v8::Exception::CreateMessage(exception); |
+ v8::Local<v8::Message> message = v8::Exception::CreateMessage(isolate, exception); |
if (!message.IsEmpty()) { |
if (v8Call(message->GetLineNumber(isolate->GetCurrentContext()), lineNumber) |
&& v8Call(message->GetStartColumn(isolate->GetCurrentContext()), columnNumber)) |
@@ -247,9 +248,8 @@ static void promiseRejectHandlerInMainThread(v8::PromiseRejectMessage data) |
resourceName = extractResourceName(message, window->document()); |
errorMessage = toCoreStringWithNullCheck(message->Get()); |
callStack = extractCallStack(isolate, message, &scriptId); |
- } else if (!exception.IsEmpty() && exception->IsInt32()) { |
- // For Smi's the message would be empty. |
- errorMessage = "Uncaught " + String::number(exception.As<v8::Integer>()->Value()); |
+ if (message->IsSharedCrossOrigin()) |
+ corsStatus = SharableCrossOrigin; |
} |
String messageForConsole = extractMessageForConsole(isolate, data.GetValue()); |
@@ -257,7 +257,7 @@ static void promiseRejectHandlerInMainThread(v8::PromiseRejectMessage data) |
errorMessage = "Uncaught " + messageForConsole; |
ScriptState* scriptState = ScriptState::current(isolate); |
- rejectedPromisesOnMainThread().rejectedWithNoHandler(scriptState, data, errorMessage, resourceName, scriptId, lineNumber, columnNumber, callStack); |
+ rejectedPromisesOnMainThread().rejectedWithNoHandler(scriptState, data, errorMessage, resourceName, scriptId, lineNumber, columnNumber, callStack, corsStatus); |
} |
static void promiseRejectHandlerInWorker(v8::PromiseRejectMessage data) |
@@ -290,8 +290,10 @@ static void promiseRejectHandlerInWorker(v8::PromiseRejectMessage data) |
int columnNumber = 0; |
String resourceName; |
String errorMessage; |
+ AccessControlStatus corsStatus = NotSharableCrossOrigin; |
- v8::Local<v8::Message> message = v8::Exception::CreateMessage(data.GetValue()); |
+ v8::Local<v8::Value> exception = data.GetValue(); |
+ v8::Local<v8::Message> message = v8::Exception::CreateMessage(isolate, exception); |
if (!message.IsEmpty()) { |
TOSTRING_VOID(V8StringResource<>, resourceName, message->GetScriptOrigin().ResourceName()); |
scriptId = message->GetScriptOrigin().ScriptID()->Value(); |
@@ -300,8 +302,10 @@ static void promiseRejectHandlerInWorker(v8::PromiseRejectMessage data) |
++columnNumber; |
// message->Get() can be empty here. https://crbug.com/450330 |
errorMessage = toCoreStringWithNullCheck(message->Get()); |
+ if (message->IsSharedCrossOrigin()) |
+ corsStatus = SharableCrossOrigin; |
} |
- scriptController->rejectedPromises()->rejectedWithNoHandler(scriptState, data, errorMessage, resourceName, scriptId, lineNumber, columnNumber, nullptr); |
+ scriptController->rejectedPromises()->rejectedWithNoHandler(scriptState, data, errorMessage, resourceName, scriptId, lineNumber, columnNumber, nullptr, corsStatus); |
} |
static void failedAccessCheckCallbackInMainThread(v8::Local<v8::Object> host, v8::AccessType type, v8::Local<v8::Value> data) |