зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1779000 - Part 1: Remove dom.indexedDB.errorEventToSelfError r=asuth
This has never been documented/tested anywhere and has always been disabled since its start in 2017 in bug 1389913. This removes the pref as https://github.com/w3c/IndexedDB/issues/49 decided not to propagate to window.onerror in 2019. Differential Revision: https://phabricator.services.mozilla.com/D151503
This commit is contained in:
Родитель
98fd2e5e33
Коммит
f93cc7fa75
|
@ -1025,16 +1025,6 @@ void IDBDatabase::LastRelease() {
|
|||
}
|
||||
}
|
||||
|
||||
nsresult IDBDatabase::PostHandleEvent(EventChainPostVisitor& aVisitor) {
|
||||
nsresult rv =
|
||||
IndexedDatabaseManager::CommonPostHandleEvent(aVisitor, *mFactory);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
JSObject* IDBDatabase::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto) {
|
||||
return IDBDatabase_Binding::Wrap(aCx, this, aGivenProto);
|
||||
|
|
|
@ -220,8 +220,6 @@ class IDBDatabase final : public DOMEventTargetHelper {
|
|||
|
||||
virtual void LastRelease() override;
|
||||
|
||||
virtual nsresult PostHandleEvent(EventChainPostVisitor& aVisitor) override;
|
||||
|
||||
// nsWrapperCache
|
||||
virtual JSObject* WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
|
|
@ -439,16 +439,6 @@ NS_INTERFACE_MAP_END_INHERITING(IDBRequest)
|
|||
NS_IMPL_ADDREF_INHERITED(IDBOpenDBRequest, IDBRequest)
|
||||
NS_IMPL_RELEASE_INHERITED(IDBOpenDBRequest, IDBRequest)
|
||||
|
||||
nsresult IDBOpenDBRequest::PostHandleEvent(EventChainPostVisitor& aVisitor) {
|
||||
nsresult rv =
|
||||
IndexedDatabaseManager::CommonPostHandleEvent(aVisitor, *mFactory);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
JSObject* IDBOpenDBRequest::WrapObject(JSContext* aCx,
|
||||
JS::Handle<JSObject*> aGivenProto) {
|
||||
AssertIsOnOwningThread();
|
||||
|
|
|
@ -271,8 +271,6 @@ class IDBOpenDBRequest final : public IDBRequest {
|
|||
void NoteComplete();
|
||||
|
||||
// EventTarget
|
||||
virtual nsresult PostHandleEvent(EventChainPostVisitor& aVisitor) override;
|
||||
|
||||
IMPL_EVENT_HANDLER(blocked);
|
||||
IMPL_EVENT_HANDLER(upgradeneeded);
|
||||
|
||||
|
|
|
@ -129,8 +129,6 @@ const char kPrefFileHandle[] = "dom.fileHandle.enabled";
|
|||
const char kDataThresholdPref[] = IDB_PREF_BRANCH_ROOT "dataThreshold";
|
||||
const char kPrefMaxSerilizedMsgSize[] =
|
||||
IDB_PREF_BRANCH_ROOT "maxSerializedMsgSize";
|
||||
const char kPrefErrorEventToSelfError[] =
|
||||
IDB_PREF_BRANCH_ROOT "errorEventToSelfError";
|
||||
const char kPreprocessingPref[] = IDB_PREF_BRANCH_ROOT "preprocessing";
|
||||
const char kPrefMaxPreloadExtraRecords[] =
|
||||
IDB_PREF_BRANCH_ROOT "maxPreloadExtraRecords";
|
||||
|
@ -153,7 +151,6 @@ Atomic<bool> gClosed(false);
|
|||
Atomic<bool> gTestingMode(false);
|
||||
Atomic<bool> gExperimentalFeaturesEnabled(false);
|
||||
Atomic<bool> gFileHandleEnabled(false);
|
||||
Atomic<bool> gPrefErrorEventToSelfError(false);
|
||||
Atomic<int32_t> gDataThresholdBytes(0);
|
||||
Atomic<int32_t> gMaxSerializedMsgSize(0);
|
||||
Atomic<bool> gPreprocessingEnabled(false);
|
||||
|
@ -283,9 +280,6 @@ nsresult IndexedDatabaseManager::Init() {
|
|||
&gExperimentalFeaturesEnabled);
|
||||
Preferences::RegisterCallbackAndCall(AtomicBoolPrefChangedCallback,
|
||||
kPrefFileHandle, &gFileHandleEnabled);
|
||||
Preferences::RegisterCallbackAndCall(AtomicBoolPrefChangedCallback,
|
||||
kPrefErrorEventToSelfError,
|
||||
&gPrefErrorEventToSelfError);
|
||||
|
||||
// By default IndexedDB uses SQLite with PRAGMA synchronous = NORMAL. This
|
||||
// guarantees (unlike synchronous = OFF) atomicity and consistency, but not
|
||||
|
@ -353,9 +347,6 @@ void IndexedDatabaseManager::Destroy() {
|
|||
&gExperimentalFeaturesEnabled);
|
||||
Preferences::UnregisterCallback(AtomicBoolPrefChangedCallback,
|
||||
kPrefFileHandle, &gFileHandleEnabled);
|
||||
Preferences::UnregisterCallback(AtomicBoolPrefChangedCallback,
|
||||
kPrefErrorEventToSelfError,
|
||||
&gPrefErrorEventToSelfError);
|
||||
|
||||
Preferences::UnregisterCallback(LoggingModePrefChangedCallback,
|
||||
kPrefLoggingDetails);
|
||||
|
@ -378,109 +369,6 @@ void IndexedDatabaseManager::Destroy() {
|
|||
delete this;
|
||||
}
|
||||
|
||||
// static
|
||||
nsresult IndexedDatabaseManager::CommonPostHandleEvent(
|
||||
EventChainPostVisitor& aVisitor, const IDBFactory& aFactory) {
|
||||
MOZ_ASSERT(aVisitor.mDOMEvent);
|
||||
|
||||
if (!gPrefErrorEventToSelfError) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (aVisitor.mEventStatus == nsEventStatus_eConsumeNoDefault) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (!aVisitor.mDOMEvent->IsTrusted()) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsAutoString type;
|
||||
aVisitor.mDOMEvent->GetType(type);
|
||||
|
||||
MOZ_ASSERT(nsDependentString(kErrorEventType).EqualsLiteral("error"));
|
||||
if (!type.EqualsLiteral("error")) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr<EventTarget> eventTarget = aVisitor.mDOMEvent->GetTarget();
|
||||
MOZ_ASSERT(eventTarget);
|
||||
|
||||
// Only mess with events that were originally targeted to an IDBRequest.
|
||||
RefPtr<IDBRequest> request;
|
||||
if (NS_FAILED(eventTarget->QueryInterface(
|
||||
NS_GET_IID(mozilla::dom::detail::PrivateIDBRequest),
|
||||
getter_AddRefs(request))) ||
|
||||
!request) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
RefPtr<DOMException> error = request->GetErrorAfterResult();
|
||||
|
||||
nsString errorName;
|
||||
if (error) {
|
||||
error->GetName(errorName);
|
||||
}
|
||||
|
||||
RootedDictionary<ErrorEventInit> init(RootingCx());
|
||||
request->GetCallerLocation(init.mFilename, &init.mLineno, &init.mColno);
|
||||
|
||||
init.mMessage = errorName;
|
||||
init.mCancelable = true;
|
||||
init.mBubbles = true;
|
||||
|
||||
nsEventStatus status = nsEventStatus_eIgnore;
|
||||
|
||||
if (NS_IsMainThread()) {
|
||||
nsCOMPtr<nsIDOMWindow> window =
|
||||
do_QueryInterface(eventTarget->GetOwnerGlobal());
|
||||
if (window) {
|
||||
nsCOMPtr<nsIScriptGlobalObject> sgo = do_QueryInterface(window);
|
||||
MOZ_ASSERT(sgo);
|
||||
|
||||
if (NS_WARN_IF(!sgo->HandleScriptError(init, &status))) {
|
||||
status = nsEventStatus_eIgnore;
|
||||
}
|
||||
} else {
|
||||
// We don't fire error events at any global for non-window JS on the main
|
||||
// thread.
|
||||
}
|
||||
} else {
|
||||
// Not on the main thread, must be in a worker.
|
||||
WorkerPrivate* workerPrivate = GetCurrentThreadWorkerPrivate();
|
||||
MOZ_ASSERT(workerPrivate);
|
||||
|
||||
RefPtr<WorkerGlobalScope> globalScope = workerPrivate->GlobalScope();
|
||||
MOZ_ASSERT(globalScope);
|
||||
|
||||
RefPtr<ErrorEvent> errorEvent = ErrorEvent::Constructor(
|
||||
globalScope, nsDependentString(kErrorEventType), init);
|
||||
MOZ_ASSERT(errorEvent);
|
||||
|
||||
errorEvent->SetTrusted(true);
|
||||
|
||||
RefPtr<EventTarget> target = static_cast<EventTarget*>(globalScope.get());
|
||||
|
||||
if (NS_WARN_IF(NS_FAILED(EventDispatcher::DispatchDOMEvent(
|
||||
target,
|
||||
/* aWidgetEvent */ nullptr, errorEvent,
|
||||
/* aPresContext */ nullptr, &status)))) {
|
||||
status = nsEventStatus_eIgnore;
|
||||
}
|
||||
}
|
||||
|
||||
if (status == nsEventStatus_eConsumeNoDefault) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Log the error to the error console.
|
||||
ScriptErrorHelper::Dump(errorName, init.mFilename, init.mLineno, init.mColno,
|
||||
nsIScriptError::errorFlag, aFactory.IsChrome(),
|
||||
aFactory.InnerWindowID());
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// static
|
||||
bool IndexedDatabaseManager::ResolveSandboxBinding(JSContext* aCx) {
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
|
|
@ -133,10 +133,6 @@ class IndexedDatabaseManager final {
|
|||
|
||||
static const nsCString& GetLocale();
|
||||
|
||||
// TODO: Convert this to MOZ_CAN_RUN_SCRIPT (bug 1415230)
|
||||
MOZ_CAN_RUN_SCRIPT_BOUNDARY static nsresult CommonPostHandleEvent(
|
||||
EventChainPostVisitor& aVisitor, const IDBFactory& aFactory);
|
||||
|
||||
static bool ResolveSandboxBinding(JSContext* aCx);
|
||||
|
||||
static bool DefineIndexedDB(JSContext* aCx, JS::Handle<JSObject*> aGlobal);
|
||||
|
|
Загрузка…
Ссылка в новой задаче