mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-01 12:57:31 +09:00
1332245 - Move nsScriptError from js/xpconnect to dom/bindings.
This commit is contained in:
parent
0982e6f95b
commit
19854690b7
19 changed files with 335 additions and 83 deletions
|
|
@ -6,6 +6,12 @@
|
||||||
|
|
||||||
TEST_DIRS += ['test']
|
TEST_DIRS += ['test']
|
||||||
|
|
||||||
|
XPIDL_SOURCES += [
|
||||||
|
'nsIScriptError.idl'
|
||||||
|
]
|
||||||
|
|
||||||
|
XPIDL_MODULE = 'dom_bindings'
|
||||||
|
|
||||||
EXPORTS.ipc += [
|
EXPORTS.ipc += [
|
||||||
'ErrorIPCUtils.h',
|
'ErrorIPCUtils.h',
|
||||||
]
|
]
|
||||||
|
|
@ -91,6 +97,8 @@ UNIFIED_SOURCES += [
|
||||||
'DOMJSProxyHandler.cpp',
|
'DOMJSProxyHandler.cpp',
|
||||||
'Exceptions.cpp',
|
'Exceptions.cpp',
|
||||||
'IterableIterator.cpp',
|
'IterableIterator.cpp',
|
||||||
|
'nsScriptError.cpp',
|
||||||
|
'nsScriptErrorWithStack.cpp',
|
||||||
'SimpleGlobalObject.cpp',
|
'SimpleGlobalObject.cpp',
|
||||||
'ToJSValue.cpp',
|
'ToJSValue.cpp',
|
||||||
'WebIDLGlobalNameHash.cpp',
|
'WebIDLGlobalNameHash.cpp',
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,15 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* nsIScriptError implementation. Defined here, lacking a JS-specific
|
* nsIScriptError implementation.
|
||||||
* place to put XPCOM things.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "xpcprivate.h"
|
#include "nsScriptError.h"
|
||||||
#include "jsprf.h"
|
#include "jsprf.h"
|
||||||
#include "MainThreadUtils.h"
|
#include "MainThreadUtils.h"
|
||||||
#include "mozilla/Assertions.h"
|
#include "mozilla/Assertions.h"
|
||||||
#include "nsGlobalWindow.h"
|
#include "nsGlobalWindow.h"
|
||||||
|
#include "nsNetUtil.h"
|
||||||
#include "nsPIDOMWindow.h"
|
#include "nsPIDOMWindow.h"
|
||||||
#include "nsILoadContext.h"
|
#include "nsILoadContext.h"
|
||||||
#include "nsIDocShell.h"
|
#include "nsIDocShell.h"
|
||||||
86
dom/bindings/nsScriptError.h
Normal file
86
dom/bindings/nsScriptError.h
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
#ifndef mozilla_dom_nsScriptError_h
|
||||||
|
#define mozilla_dom_nsScriptError_h
|
||||||
|
|
||||||
|
#include "mozilla/Atomics.h"
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "jsapi.h"
|
||||||
|
#include "js/RootingAPI.h"
|
||||||
|
|
||||||
|
#include "nsIScriptError.h"
|
||||||
|
#include "nsString.h"
|
||||||
|
|
||||||
|
// Definition of nsScriptError..
|
||||||
|
class nsScriptErrorBase : public nsIScriptError {
|
||||||
|
public:
|
||||||
|
nsScriptErrorBase();
|
||||||
|
|
||||||
|
NS_DECL_NSICONSOLEMESSAGE
|
||||||
|
NS_DECL_NSISCRIPTERROR
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual ~nsScriptErrorBase();
|
||||||
|
|
||||||
|
void
|
||||||
|
InitializeOnMainThread();
|
||||||
|
|
||||||
|
nsString mMessage;
|
||||||
|
nsString mMessageName;
|
||||||
|
nsString mSourceName;
|
||||||
|
uint32_t mLineNumber;
|
||||||
|
nsString mSourceLine;
|
||||||
|
uint32_t mColumnNumber;
|
||||||
|
uint32_t mFlags;
|
||||||
|
nsCString mCategory;
|
||||||
|
// mOuterWindowID is set on the main thread from InitializeOnMainThread().
|
||||||
|
uint64_t mOuterWindowID;
|
||||||
|
uint64_t mInnerWindowID;
|
||||||
|
int64_t mTimeStamp;
|
||||||
|
// mInitializedOnMainThread and mIsFromPrivateWindow are set on the main
|
||||||
|
// thread from InitializeOnMainThread().
|
||||||
|
mozilla::Atomic<bool> mInitializedOnMainThread;
|
||||||
|
bool mIsFromPrivateWindow;
|
||||||
|
};
|
||||||
|
|
||||||
|
class nsScriptError final : public nsScriptErrorBase {
|
||||||
|
public:
|
||||||
|
nsScriptError() {}
|
||||||
|
NS_DECL_THREADSAFE_ISUPPORTS
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual ~nsScriptError() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
class nsScriptErrorWithStack : public nsScriptErrorBase {
|
||||||
|
public:
|
||||||
|
explicit nsScriptErrorWithStack(JS::HandleObject);
|
||||||
|
|
||||||
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||||
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsScriptErrorWithStack)
|
||||||
|
|
||||||
|
NS_IMETHOD Init(const nsAString& message,
|
||||||
|
const nsAString& sourceName,
|
||||||
|
const nsAString& sourceLine,
|
||||||
|
uint32_t lineNumber,
|
||||||
|
uint32_t columnNumber,
|
||||||
|
uint32_t flags,
|
||||||
|
const char* category) override;
|
||||||
|
|
||||||
|
NS_IMETHOD GetStack(JS::MutableHandleValue) override;
|
||||||
|
NS_IMETHOD ToString(nsACString& aResult) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual ~nsScriptErrorWithStack();
|
||||||
|
// Complete stackframe where the error happened.
|
||||||
|
// Must be SavedFrame object.
|
||||||
|
JS::Heap<JSObject*> mStack;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* mozilla_dom_nsScriptError_h */
|
||||||
|
|
@ -10,12 +10,14 @@
|
||||||
* that can store a SavedFrame stack trace object.
|
* that can store a SavedFrame stack trace object.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "xpcprivate.h"
|
#include "nsScriptError.h"
|
||||||
#include "MainThreadUtils.h"
|
#include "MainThreadUtils.h"
|
||||||
#include "mozilla/Assertions.h"
|
#include "mozilla/Assertions.h"
|
||||||
|
#include "mozilla/dom/ScriptSettings.h"
|
||||||
#include "nsGlobalWindow.h"
|
#include "nsGlobalWindow.h"
|
||||||
#include "nsCycleCollectionParticipant.h"
|
#include "nsCycleCollectionParticipant.h"
|
||||||
|
|
||||||
|
using namespace mozilla::dom;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
#include "mozilla/dom/ContentParent.h"
|
#include "mozilla/dom/ContentParent.h"
|
||||||
#include "mozilla/dom/ScriptSettings.h"
|
#include "mozilla/dom/ScriptSettings.h"
|
||||||
#include "nsJSUtils.h"
|
#include "nsJSUtils.h"
|
||||||
|
#include "nsIScriptError.h"
|
||||||
#include "jsfriendapi.h"
|
#include "jsfriendapi.h"
|
||||||
#include "jswrapper.h"
|
#include "jswrapper.h"
|
||||||
#include "js/Proxy.h"
|
#include "js/Proxy.h"
|
||||||
|
|
|
||||||
124
js/src/vm/ErrorReporting.cpp
Normal file
124
js/src/vm/ErrorReporting.cpp
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
* vim: set ts=8 sts=4 et sw=4 tw=99:
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
#include "vm/ErrorReporting.h"
|
||||||
|
|
||||||
|
#include "mozilla/Move.h"
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "jscntxt.h"
|
||||||
|
#include "jsexn.h"
|
||||||
|
|
||||||
|
using mozilla::Move;
|
||||||
|
|
||||||
|
using JS::UniqueTwoByteChars;
|
||||||
|
|
||||||
|
void
|
||||||
|
CallWarningReporter(JSContext* cx, JSErrorReport* reportp)
|
||||||
|
{
|
||||||
|
MOZ_ASSERT(reportp);
|
||||||
|
MOZ_ASSERT(JSREPORT_IS_WARNING(reportp->flags));
|
||||||
|
|
||||||
|
if (JS::WarningReporter warningReporter = cx->runtime()->warningReporter)
|
||||||
|
warningReporter(cx, reportp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CompileError::throwError(JSContext* cx)
|
||||||
|
{
|
||||||
|
if (JSREPORT_IS_WARNING(flags)) {
|
||||||
|
CallWarningReporter(cx, this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there's a runtime exception type associated with this error
|
||||||
|
// number, set that as the pending exception. For errors occuring at
|
||||||
|
// compile time, this is very likely to be a JSEXN_SYNTAXERR.
|
||||||
|
//
|
||||||
|
// If an exception is thrown but not caught, the JSREPORT_EXCEPTION
|
||||||
|
// flag will be set in report.flags. Proper behavior for an error
|
||||||
|
// reporter is to ignore a report with this flag for all but top-level
|
||||||
|
// compilation errors. The exception will remain pending, and so long
|
||||||
|
// as the non-top-level "load", "eval", or "compile" native function
|
||||||
|
// returns false, the top-level reporter will eventually receive the
|
||||||
|
// uncaught exception report.
|
||||||
|
ErrorToException(cx, this, nullptr, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
ReportCompileWarning(JSContext* cx, ErrorMetadata&& metadata, UniquePtr<JSErrorNotes> notes,
|
||||||
|
unsigned flags, unsigned errorNumber, va_list args)
|
||||||
|
{
|
||||||
|
// On the main thread, report the error immediately. When compiling off
|
||||||
|
// thread, save the error so that the thread finishing the parse can report
|
||||||
|
// it later.
|
||||||
|
CompileError tempErr;
|
||||||
|
CompileError* err = &tempErr;
|
||||||
|
if (!cx->isJSContext() && !cx->addPendingCompileError(&err)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
err->notes = Move(notes);
|
||||||
|
err->flags = flags;
|
||||||
|
err->errorNumber = errorNumber;
|
||||||
|
|
||||||
|
err->filename = metadata.filename;
|
||||||
|
err->lineno = metadata.lineNumber;
|
||||||
|
err->column = metadata.columnNumber;
|
||||||
|
err->isMuted = metadata.isMuted;
|
||||||
|
|
||||||
|
if (UniqueTwoByteChars lineOfContext = Move(metadata.lineOfContext))
|
||||||
|
err->initOwnedLinebuf(lineOfContext.release(), metadata.lineLength, metadata.tokenOffset);
|
||||||
|
|
||||||
|
if (!ExpandErrorArgumentsVA(cx, GetErrorMessage, nullptr, errorNumber,
|
||||||
|
nullptr, ArgumentsAreLatin1, err, args))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cx->isJSContext()) {
|
||||||
|
err->throwError(cx->asJSContext());
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ReportCompileError(JSContext* cx, ErrorMetadata&& metadata, UniquePtr<JSErrorNotes> notes,
|
||||||
|
unsigned flags, unsigned errorNumber, va_list args)
|
||||||
|
{
|
||||||
|
// On the main thread, report the error immediately. When compiling off
|
||||||
|
// thread, save the error so that the thread finishing the parse can report
|
||||||
|
// it later.
|
||||||
|
CompileError tempErr;
|
||||||
|
CompileError* err = &tempErr;
|
||||||
|
if (!cx->isJSContext() && !cx->addPendingCompileError(&err)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
err->notes = Move(notes);
|
||||||
|
err->flags = flags;
|
||||||
|
err->errorNumber = errorNumber;
|
||||||
|
|
||||||
|
err->filename = metadata.filename;
|
||||||
|
err->lineno = metadata.lineNumber;
|
||||||
|
err->column = metadata.columnNumber;
|
||||||
|
err->isMuted = metadata.isMuted;
|
||||||
|
|
||||||
|
if (UniqueTwoByteChars lineOfContext = Move(metadata.lineOfContext))
|
||||||
|
err->initOwnedLinebuf(lineOfContext.release(), metadata.lineLength, metadata.tokenOffset);
|
||||||
|
|
||||||
|
if (!ExpandErrorArgumentsVA(cx, GetErrorMessage, nullptr, errorNumber,
|
||||||
|
nullptr, ArgumentsAreLatin1, err, args))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cx->isJSContext()) {
|
||||||
|
err->throwError(cx->asJSContext());
|
||||||
|
}
|
||||||
|
}
|
||||||
91
js/src/vm/ErrorReporting.h
Normal file
91
js/src/vm/ErrorReporting.h
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
* vim: set ts=8 sts=4 et sw=4 tw=99:
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
#ifndef vm_ErrorReporting_h
|
||||||
|
#define vm_ErrorReporting_h
|
||||||
|
|
||||||
|
#include "mozilla/Move.h"
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "jsapi.h" // for JSErrorNotes, JSErrorReport
|
||||||
|
|
||||||
|
#include "js/UniquePtr.h" // for UniquePtr
|
||||||
|
#include "js/Utility.h" // for UniqueTwoByteChars
|
||||||
|
|
||||||
|
struct JSContext;
|
||||||
|
|
||||||
|
namespace js {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metadata for a compilation error (or warning) at a particular offset, or at
|
||||||
|
* no offset (i.e. with respect to a script overall).
|
||||||
|
*/
|
||||||
|
struct ErrorMetadata
|
||||||
|
{
|
||||||
|
// The file/URL where the error occurred.
|
||||||
|
const char* filename;
|
||||||
|
|
||||||
|
// The line and column numbers where the error occurred. If the error
|
||||||
|
// is with respect to the entire script and not with respect to a
|
||||||
|
// particular location, these will both be zero.
|
||||||
|
uint32_t lineNumber;
|
||||||
|
uint32_t columnNumber;
|
||||||
|
|
||||||
|
// If the error occurs at a particular location, context surrounding the
|
||||||
|
// location of the error: the line that contained the error, or a small
|
||||||
|
// portion of it if the line is long.
|
||||||
|
//
|
||||||
|
// This information is provided on a best-effort basis: code populating
|
||||||
|
// ErrorMetadata instances isn't obligated to supply this.
|
||||||
|
JS::UniqueTwoByteChars lineOfContext;
|
||||||
|
|
||||||
|
// If |lineOfContext| is non-null, its length.
|
||||||
|
size_t lineLength;
|
||||||
|
|
||||||
|
// If |lineOfContext| is non-null, the offset within it of the token that
|
||||||
|
// triggered the error.
|
||||||
|
size_t tokenOffset;
|
||||||
|
|
||||||
|
// Whether the error is "muted" because it derives from a cross-origin
|
||||||
|
// load. See the comment in TransitiveCompileOptions in jsapi.h for
|
||||||
|
// details.
|
||||||
|
bool isMuted;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CompileError : public JSErrorReport
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void throwError(JSContext* cx);
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Send a JSErrorReport to the warningReporter callback. */
|
||||||
|
extern void
|
||||||
|
CallWarningReporter(JSContext* cx, JSErrorReport* report);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Report a compile error during script processing prior to execution of the
|
||||||
|
* script.
|
||||||
|
*/
|
||||||
|
extern void
|
||||||
|
ReportCompileError(ErrorMetadata&& metadata, UniquePtr<JSErrorNotes> notes,
|
||||||
|
unsigned flags, unsigned errorNumber, va_list args);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Report a compile warning during script processing prior to execution of the
|
||||||
|
* script. Returns true if the warning was successfully reported, false if an
|
||||||
|
* error occurred.
|
||||||
|
*
|
||||||
|
* This function DOES NOT respect an existing werror option. If the caller
|
||||||
|
* wishes such option to be respected, it must do so itself.
|
||||||
|
*/
|
||||||
|
extern MOZ_MUST_USE bool
|
||||||
|
ReportCompileWarning(JSContext* cx, ErrorMetadata&& metadata, UniquePtr<JSErrorNotes> notes,
|
||||||
|
unsigned flags, unsigned errorNumber, va_list args);
|
||||||
|
|
||||||
|
} // namespace js
|
||||||
|
|
||||||
|
#endif /* vm_ErrorReporting_h */
|
||||||
|
|
@ -7,7 +7,6 @@
|
||||||
XPIDL_SOURCES += [
|
XPIDL_SOURCES += [
|
||||||
'mozIJSSubScriptLoader.idl',
|
'mozIJSSubScriptLoader.idl',
|
||||||
'nsIAddonInterposition.idl',
|
'nsIAddonInterposition.idl',
|
||||||
'nsIScriptError.idl',
|
|
||||||
'nsIXPConnect.idl',
|
'nsIXPConnect.idl',
|
||||||
'nsIXPCScriptable.idl',
|
'nsIXPCScriptable.idl',
|
||||||
'xpccomponents.idl',
|
'xpccomponents.idl',
|
||||||
|
|
|
||||||
|
|
@ -34,9 +34,11 @@
|
||||||
#include "nsDOMClassInfo.h"
|
#include "nsDOMClassInfo.h"
|
||||||
#include "ShimInterfaceInfo.h"
|
#include "ShimInterfaceInfo.h"
|
||||||
#include "nsIAddonInterposition.h"
|
#include "nsIAddonInterposition.h"
|
||||||
|
#include "nsIScriptError.h"
|
||||||
#include "nsISimpleEnumerator.h"
|
#include "nsISimpleEnumerator.h"
|
||||||
#include "nsPIDOMWindow.h"
|
#include "nsPIDOMWindow.h"
|
||||||
#include "nsGlobalWindow.h"
|
#include "nsGlobalWindow.h"
|
||||||
|
#include "nsScriptError.h"
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
using namespace JS;
|
using namespace JS;
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,11 @@
|
||||||
|
|
||||||
#include "xpcprivate.h"
|
#include "xpcprivate.h"
|
||||||
#include "nsIAtom.h"
|
#include "nsIAtom.h"
|
||||||
|
#include "nsIScriptError.h"
|
||||||
#include "nsWrapperCache.h"
|
#include "nsWrapperCache.h"
|
||||||
#include "nsJSUtils.h"
|
#include "nsJSUtils.h"
|
||||||
#include "nsQueryObject.h"
|
#include "nsQueryObject.h"
|
||||||
|
#include "nsScriptError.h"
|
||||||
#include "WrapperFactory.h"
|
#include "WrapperFactory.h"
|
||||||
|
|
||||||
#include "nsWrapperCacheInlines.h"
|
#include "nsWrapperCacheInlines.h"
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsJSID)
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsJSID)
|
||||||
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIXPConnect,
|
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIXPConnect,
|
||||||
nsXPConnect::GetSingleton)
|
nsXPConnect::GetSingleton)
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsScriptError)
|
|
||||||
|
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(mozJSComponentLoader)
|
NS_GENERIC_FACTORY_CONSTRUCTOR(mozJSComponentLoader)
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(mozJSSubScriptLoader)
|
NS_GENERIC_FACTORY_CONSTRUCTOR(mozJSSubScriptLoader)
|
||||||
|
|
@ -31,14 +30,12 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(mozJSSubScriptLoader)
|
||||||
NS_DEFINE_NAMED_CID(NS_JS_ID_CID);
|
NS_DEFINE_NAMED_CID(NS_JS_ID_CID);
|
||||||
NS_DEFINE_NAMED_CID(NS_XPCONNECT_CID);
|
NS_DEFINE_NAMED_CID(NS_XPCONNECT_CID);
|
||||||
NS_DEFINE_NAMED_CID(NS_XPCEXCEPTION_CID);
|
NS_DEFINE_NAMED_CID(NS_XPCEXCEPTION_CID);
|
||||||
NS_DEFINE_NAMED_CID(NS_SCRIPTERROR_CID);
|
|
||||||
NS_DEFINE_NAMED_CID(MOZJSCOMPONENTLOADER_CID);
|
NS_DEFINE_NAMED_CID(MOZJSCOMPONENTLOADER_CID);
|
||||||
NS_DEFINE_NAMED_CID(MOZ_JSSUBSCRIPTLOADER_CID);
|
NS_DEFINE_NAMED_CID(MOZ_JSSUBSCRIPTLOADER_CID);
|
||||||
|
|
||||||
#define XPCONNECT_CIDENTRIES \
|
#define XPCONNECT_CIDENTRIES \
|
||||||
{ &kNS_JS_ID_CID, false, nullptr, nsJSIDConstructor }, \
|
{ &kNS_JS_ID_CID, false, nullptr, nsJSIDConstructor }, \
|
||||||
{ &kNS_XPCONNECT_CID, false, nullptr, nsIXPConnectConstructor }, \
|
{ &kNS_XPCONNECT_CID, false, nullptr, nsIXPConnectConstructor }, \
|
||||||
{ &kNS_SCRIPTERROR_CID, false, nullptr, nsScriptErrorConstructor }, \
|
|
||||||
{ &kMOZJSCOMPONENTLOADER_CID, false, nullptr, mozJSComponentLoaderConstructor },\
|
{ &kMOZJSCOMPONENTLOADER_CID, false, nullptr, mozJSComponentLoaderConstructor },\
|
||||||
{ &kMOZ_JSSUBSCRIPTLOADER_CID, false, nullptr, mozJSSubScriptLoaderConstructor },
|
{ &kMOZ_JSSUBSCRIPTLOADER_CID, false, nullptr, mozJSSubScriptLoaderConstructor },
|
||||||
|
|
||||||
|
|
@ -46,7 +43,6 @@ NS_DEFINE_NAMED_CID(MOZ_JSSUBSCRIPTLOADER_CID);
|
||||||
{ XPC_ID_CONTRACTID, &kNS_JS_ID_CID }, \
|
{ XPC_ID_CONTRACTID, &kNS_JS_ID_CID }, \
|
||||||
{ XPC_XPCONNECT_CONTRACTID, &kNS_XPCONNECT_CID }, \
|
{ XPC_XPCONNECT_CONTRACTID, &kNS_XPCONNECT_CID }, \
|
||||||
{ XPC_CONTEXT_STACK_CONTRACTID, &kNS_XPCONNECT_CID }, \
|
{ XPC_CONTEXT_STACK_CONTRACTID, &kNS_XPCONNECT_CID }, \
|
||||||
{ NS_SCRIPTERROR_CONTRACTID, &kNS_SCRIPTERROR_CID }, \
|
|
||||||
{ MOZJSCOMPONENTLOADER_CONTRACTID, &kMOZJSCOMPONENTLOADER_CID }, \
|
{ MOZJSCOMPONENTLOADER_CONTRACTID, &kMOZJSCOMPONENTLOADER_CID }, \
|
||||||
{ MOZJSSUBSCRIPTLOADER_CONTRACTID, &kMOZ_JSSUBSCRIPTLOADER_CID },
|
{ MOZJSSUBSCRIPTLOADER_CONTRACTID, &kMOZ_JSSUBSCRIPTLOADER_CID },
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
#include "jsprf.h"
|
#include "jsprf.h"
|
||||||
#include "nsArrayEnumerator.h"
|
#include "nsArrayEnumerator.h"
|
||||||
#include "nsContentUtils.h"
|
#include "nsContentUtils.h"
|
||||||
|
#include "nsIScriptError.h"
|
||||||
#include "nsWrapperCache.h"
|
#include "nsWrapperCache.h"
|
||||||
#include "AccessCheck.h"
|
#include "AccessCheck.h"
|
||||||
#include "nsJSUtils.h"
|
#include "nsJSUtils.h"
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include "mozilla/MemoryReporting.h"
|
#include "mozilla/MemoryReporting.h"
|
||||||
#include "mozilla/XPTInterfaceInfoManager.h"
|
#include "mozilla/XPTInterfaceInfoManager.h"
|
||||||
|
#include "nsIScriptError.h"
|
||||||
#include "nsPrintfCString.h"
|
#include "nsPrintfCString.h"
|
||||||
|
|
||||||
using namespace JS;
|
using namespace JS;
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,6 @@ EXPORTS += [
|
||||||
|
|
||||||
UNIFIED_SOURCES += [
|
UNIFIED_SOURCES += [
|
||||||
'ExportHelpers.cpp',
|
'ExportHelpers.cpp',
|
||||||
'nsScriptError.cpp',
|
|
||||||
'nsScriptErrorWithStack.cpp',
|
|
||||||
'nsXPConnect.cpp',
|
'nsXPConnect.cpp',
|
||||||
'Sandbox.cpp',
|
'Sandbox.cpp',
|
||||||
'XPCCallContext.cpp',
|
'XPCCallContext.cpp',
|
||||||
|
|
@ -58,6 +56,7 @@ LOCAL_INCLUDES += [
|
||||||
'../wrappers',
|
'../wrappers',
|
||||||
'/caps',
|
'/caps',
|
||||||
'/dom/base',
|
'/dom/base',
|
||||||
|
'/dom/bindings',
|
||||||
'/dom/html',
|
'/dom/html',
|
||||||
'/dom/svg',
|
'/dom/svg',
|
||||||
'/dom/workers',
|
'/dom/workers',
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,9 @@
|
||||||
#include "nsIObjectOutputStream.h"
|
#include "nsIObjectOutputStream.h"
|
||||||
#include "nsScriptSecurityManager.h"
|
#include "nsScriptSecurityManager.h"
|
||||||
#include "nsIPermissionManager.h"
|
#include "nsIPermissionManager.h"
|
||||||
|
#include "nsIScriptError.h"
|
||||||
#include "nsContentUtils.h"
|
#include "nsContentUtils.h"
|
||||||
|
#include "nsScriptError.h"
|
||||||
#include "jsfriendapi.h"
|
#include "jsfriendapi.h"
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,6 @@
|
||||||
#include "MainThreadUtils.h"
|
#include "MainThreadUtils.h"
|
||||||
|
|
||||||
#include "nsIConsoleService.h"
|
#include "nsIConsoleService.h"
|
||||||
#include "nsIScriptError.h"
|
|
||||||
#include "nsIException.h"
|
#include "nsIException.h"
|
||||||
|
|
||||||
#include "nsVariant.h"
|
#include "nsVariant.h"
|
||||||
|
|
@ -2552,77 +2551,6 @@ extern char*
|
||||||
xpc_PrintJSStack(JSContext* cx, bool showArgs, bool showLocals,
|
xpc_PrintJSStack(JSContext* cx, bool showArgs, bool showLocals,
|
||||||
bool showThisProps);
|
bool showThisProps);
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
// Definition of nsScriptError, defined here because we lack a place to put
|
|
||||||
// XPCOM objects associated with the JavaScript engine.
|
|
||||||
class nsScriptErrorBase : public nsIScriptError {
|
|
||||||
public:
|
|
||||||
nsScriptErrorBase();
|
|
||||||
|
|
||||||
// TODO - do something reasonable on getting null from these babies.
|
|
||||||
|
|
||||||
NS_DECL_NSICONSOLEMESSAGE
|
|
||||||
NS_DECL_NSISCRIPTERROR
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual ~nsScriptErrorBase();
|
|
||||||
|
|
||||||
void
|
|
||||||
InitializeOnMainThread();
|
|
||||||
|
|
||||||
nsString mMessage;
|
|
||||||
nsString mMessageName;
|
|
||||||
nsString mSourceName;
|
|
||||||
uint32_t mLineNumber;
|
|
||||||
nsString mSourceLine;
|
|
||||||
uint32_t mColumnNumber;
|
|
||||||
uint32_t mFlags;
|
|
||||||
nsCString mCategory;
|
|
||||||
// mOuterWindowID is set on the main thread from InitializeOnMainThread().
|
|
||||||
uint64_t mOuterWindowID;
|
|
||||||
uint64_t mInnerWindowID;
|
|
||||||
int64_t mTimeStamp;
|
|
||||||
// mInitializedOnMainThread and mIsFromPrivateWindow are set on the main
|
|
||||||
// thread from InitializeOnMainThread().
|
|
||||||
mozilla::Atomic<bool> mInitializedOnMainThread;
|
|
||||||
bool mIsFromPrivateWindow;
|
|
||||||
};
|
|
||||||
|
|
||||||
class nsScriptError final : public nsScriptErrorBase {
|
|
||||||
public:
|
|
||||||
nsScriptError() {}
|
|
||||||
NS_DECL_THREADSAFE_ISUPPORTS
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual ~nsScriptError() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class nsScriptErrorWithStack : public nsScriptErrorBase {
|
|
||||||
public:
|
|
||||||
explicit nsScriptErrorWithStack(JS::HandleObject);
|
|
||||||
|
|
||||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
||||||
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsScriptErrorWithStack)
|
|
||||||
|
|
||||||
NS_IMETHOD Init(const nsAString& message,
|
|
||||||
const nsAString& sourceName,
|
|
||||||
const nsAString& sourceLine,
|
|
||||||
uint32_t lineNumber,
|
|
||||||
uint32_t columnNumber,
|
|
||||||
uint32_t flags,
|
|
||||||
const char* category) override;
|
|
||||||
|
|
||||||
NS_IMETHOD GetStack(JS::MutableHandleValue) override;
|
|
||||||
NS_IMETHOD ToString(nsACString& aResult) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
virtual ~nsScriptErrorWithStack();
|
|
||||||
// Complete stackframe where the error happened.
|
|
||||||
// Must be SavedFrame object.
|
|
||||||
JS::Heap<JSObject*> mStack;
|
|
||||||
};
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Handles pre/post script processing.
|
* Handles pre/post script processing.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ LOCAL_INCLUDES += [
|
||||||
'/docshell/base',
|
'/docshell/base',
|
||||||
'/dom/audiochannel',
|
'/dom/audiochannel',
|
||||||
'/dom/base',
|
'/dom/base',
|
||||||
|
'/dom/bindings',
|
||||||
'/dom/canvas',
|
'/dom/canvas',
|
||||||
'/dom/filesystem',
|
'/dom/filesystem',
|
||||||
'/dom/geolocation',
|
'/dom/geolocation',
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@
|
||||||
#include "nsIObserver.h"
|
#include "nsIObserver.h"
|
||||||
#include "nsIObserverService.h"
|
#include "nsIObserverService.h"
|
||||||
#include "nsIScriptNameSpaceManager.h"
|
#include "nsIScriptNameSpaceManager.h"
|
||||||
|
#include "nsIScriptError.h"
|
||||||
#include "nsISelection.h"
|
#include "nsISelection.h"
|
||||||
#include "nsCaret.h"
|
#include "nsCaret.h"
|
||||||
#include "nsPlainTextSerializer.h"
|
#include "nsPlainTextSerializer.h"
|
||||||
|
|
@ -192,6 +193,8 @@ static void Shutdown();
|
||||||
#include "mozilla/dom/PresentationDeviceManager.h"
|
#include "mozilla/dom/PresentationDeviceManager.h"
|
||||||
#include "mozilla/dom/PresentationTCPSessionTransport.h"
|
#include "mozilla/dom/PresentationTCPSessionTransport.h"
|
||||||
|
|
||||||
|
#include "nsScriptError.h"
|
||||||
|
|
||||||
#include "mozilla/TextInputProcessor.h"
|
#include "mozilla/TextInputProcessor.h"
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
|
|
@ -560,6 +563,8 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(UDPSocketChild)
|
||||||
|
|
||||||
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(GeckoMediaPluginService, GeckoMediaPluginService::GetGeckoMediaPluginService)
|
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(GeckoMediaPluginService, GeckoMediaPluginService::GetGeckoMediaPluginService)
|
||||||
|
|
||||||
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsScriptError)
|
||||||
|
|
||||||
#ifdef ACCESSIBILITY
|
#ifdef ACCESSIBILITY
|
||||||
#include "xpcAccessibilityService.h"
|
#include "xpcAccessibilityService.h"
|
||||||
|
|
||||||
|
|
@ -720,6 +725,8 @@ NS_DEFINE_NAMED_CID(PRESENTATION_TCP_SESSION_TRANSPORT_CID);
|
||||||
|
|
||||||
NS_DEFINE_NAMED_CID(TEXT_INPUT_PROCESSOR_CID);
|
NS_DEFINE_NAMED_CID(TEXT_INPUT_PROCESSOR_CID);
|
||||||
|
|
||||||
|
NS_DEFINE_NAMED_CID(NS_SCRIPTERROR_CID);
|
||||||
|
|
||||||
static nsresult
|
static nsresult
|
||||||
CreateWindowCommandTableConstructor(nsISupports *aOuter,
|
CreateWindowCommandTableConstructor(nsISupports *aOuter,
|
||||||
REFNSIID aIID, void **aResult)
|
REFNSIID aIID, void **aResult)
|
||||||
|
|
@ -978,6 +985,7 @@ static const mozilla::Module::CIDEntry kLayoutCIDs[] = {
|
||||||
{ &kPRESENTATION_DEVICE_MANAGER_CID, false, nullptr, PresentationDeviceManagerConstructor },
|
{ &kPRESENTATION_DEVICE_MANAGER_CID, false, nullptr, PresentationDeviceManagerConstructor },
|
||||||
{ &kPRESENTATION_TCP_SESSION_TRANSPORT_CID, false, nullptr, PresentationTCPSessionTransportConstructor },
|
{ &kPRESENTATION_TCP_SESSION_TRANSPORT_CID, false, nullptr, PresentationTCPSessionTransportConstructor },
|
||||||
{ &kTEXT_INPUT_PROCESSOR_CID, false, nullptr, TextInputProcessorConstructor },
|
{ &kTEXT_INPUT_PROCESSOR_CID, false, nullptr, TextInputProcessorConstructor },
|
||||||
|
{ &kNS_SCRIPTERROR_CID, false, nullptr, nsScriptErrorConstructor },
|
||||||
{ nullptr }
|
{ nullptr }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1109,6 +1117,7 @@ static const mozilla::Module::ContractIDEntry kLayoutContracts[] = {
|
||||||
{ PRESENTATION_DEVICE_MANAGER_CONTRACTID, &kPRESENTATION_DEVICE_MANAGER_CID },
|
{ PRESENTATION_DEVICE_MANAGER_CONTRACTID, &kPRESENTATION_DEVICE_MANAGER_CID },
|
||||||
{ PRESENTATION_TCP_SESSION_TRANSPORT_CONTRACTID, &kPRESENTATION_TCP_SESSION_TRANSPORT_CID },
|
{ PRESENTATION_TCP_SESSION_TRANSPORT_CONTRACTID, &kPRESENTATION_TCP_SESSION_TRANSPORT_CID },
|
||||||
{ "@mozilla.org/text-input-processor;1", &kTEXT_INPUT_PROCESSOR_CID },
|
{ "@mozilla.org/text-input-processor;1", &kTEXT_INPUT_PROCESSOR_CID },
|
||||||
|
{ NS_SCRIPTERROR_CONTRACTID, &kNS_SCRIPTERROR_CID },
|
||||||
{ nullptr }
|
{ nullptr }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue