mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-01-10 22:09:32 +00:00
Merge m-c to m-i
This commit is contained in:
commit
ae31ada6d7
@ -197,9 +197,6 @@
|
||||
@BINPATH@/components/dom_payment.xpt
|
||||
@BINPATH@/components/dom_push.xpt
|
||||
@BINPATH@/components/dom_json.xpt
|
||||
#ifdef MOZ_B2G_RIL
|
||||
@BINPATH@/components/dom_mms.xpt
|
||||
#endif
|
||||
@BINPATH@/components/dom_browserelement.xpt
|
||||
@BINPATH@/components/dom_messages.xpt
|
||||
@BINPATH@/components/dom_power.xpt
|
||||
|
@ -290,12 +290,6 @@ let SessionStoreInternal = {
|
||||
// number of tabs currently restoring
|
||||
_tabsRestoringCount: 0,
|
||||
|
||||
// overrides MAX_CONCURRENT_TAB_RESTORES and restore_hidden_tabs when true
|
||||
_restoreOnDemand: false,
|
||||
|
||||
// whether to restore app tabs on demand or not, pref controlled.
|
||||
_restorePinnedTabsOnDemand: null,
|
||||
|
||||
// The state from the previous session (after restoring pinned tabs). This
|
||||
// state is persisted and passed through to the next session during an app
|
||||
// restart to make the third party add-on warning not trash the deferred
|
||||
@ -371,14 +365,6 @@ let SessionStoreInternal = {
|
||||
this._sessionhistory_max_entries =
|
||||
this._prefBranch.getIntPref("sessionhistory.max_entries");
|
||||
|
||||
this._restoreOnDemand =
|
||||
this._prefBranch.getBoolPref("sessionstore.restore_on_demand");
|
||||
this._prefBranch.addObserver("sessionstore.restore_on_demand", this, true);
|
||||
|
||||
this._restorePinnedTabsOnDemand =
|
||||
this._prefBranch.getBoolPref("sessionstore.restore_pinned_tabs_on_demand");
|
||||
this._prefBranch.addObserver("sessionstore.restore_pinned_tabs_on_demand", this, true);
|
||||
|
||||
gSessionStartup.onceInitialized.then(
|
||||
this.initSession.bind(this)
|
||||
);
|
||||
@ -1188,14 +1174,6 @@ let SessionStoreInternal = {
|
||||
_SessionFile.wipe();
|
||||
this.saveState(true);
|
||||
break;
|
||||
case "sessionstore.restore_on_demand":
|
||||
this._restoreOnDemand =
|
||||
this._prefBranch.getBoolPref("sessionstore.restore_on_demand");
|
||||
break;
|
||||
case "sessionstore.restore_pinned_tabs_on_demand":
|
||||
this._restorePinnedTabsOnDemand =
|
||||
this._prefBranch.getBoolPref("sessionstore.restore_pinned_tabs_on_demand");
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
@ -3266,10 +3244,8 @@ let SessionStoreInternal = {
|
||||
if (this._loadState == STATE_QUITTING)
|
||||
return;
|
||||
|
||||
// If it's not possible to restore anything, then just bail out.
|
||||
if ((this._restoreOnDemand &&
|
||||
(this._restorePinnedTabsOnDemand || !TabRestoreQueue.hasPriorityTabs)) ||
|
||||
this._tabsRestoringCount >= MAX_CONCURRENT_TAB_RESTORES)
|
||||
// Don't exceed the maximum number of concurrent tab restores.
|
||||
if (this._tabsRestoringCount >= MAX_CONCURRENT_TAB_RESTORES)
|
||||
return;
|
||||
|
||||
let tab = TabRestoreQueue.shift();
|
||||
@ -4496,20 +4472,50 @@ let TabRestoreQueue = {
|
||||
// The separate buckets used to store tabs.
|
||||
tabs: {priority: [], visible: [], hidden: []},
|
||||
|
||||
// Returns whether we have any high priority tabs in the queue.
|
||||
get hasPriorityTabs() !!this.tabs.priority.length,
|
||||
// Preferences used by the TabRestoreQueue to determine which tabs
|
||||
// are restored automatically and which tabs will be on-demand.
|
||||
prefs: {
|
||||
// Lazy getter that returns whether tabs are restored on demand.
|
||||
get restoreOnDemand() {
|
||||
let updateValue = () => {
|
||||
let value = Services.prefs.getBoolPref(PREF);
|
||||
let definition = {value: value, configurable: true};
|
||||
Object.defineProperty(this, "restoreOnDemand", definition);
|
||||
return value;
|
||||
}
|
||||
|
||||
// Lazy getter that returns whether we should restore hidden tabs.
|
||||
get restoreHiddenTabs() {
|
||||
let updateValue = () => {
|
||||
let value = Services.prefs.getBoolPref(PREF);
|
||||
let definition = {value: value, configurable: true};
|
||||
Object.defineProperty(this, "restoreHiddenTabs", definition);
|
||||
const PREF = "browser.sessionstore.restore_on_demand";
|
||||
Services.prefs.addObserver(PREF, updateValue, false);
|
||||
return updateValue();
|
||||
},
|
||||
|
||||
// Lazy getter that returns whether pinned tabs are restored on demand.
|
||||
get restorePinnedTabsOnDemand() {
|
||||
let updateValue = () => {
|
||||
let value = Services.prefs.getBoolPref(PREF);
|
||||
let definition = {value: value, configurable: true};
|
||||
Object.defineProperty(this, "restorePinnedTabsOnDemand", definition);
|
||||
return value;
|
||||
}
|
||||
|
||||
const PREF = "browser.sessionstore.restore_pinned_tabs_on_demand";
|
||||
Services.prefs.addObserver(PREF, updateValue, false);
|
||||
return updateValue();
|
||||
},
|
||||
|
||||
// Lazy getter that returns whether we should restore hidden tabs.
|
||||
get restoreHiddenTabs() {
|
||||
let updateValue = () => {
|
||||
let value = Services.prefs.getBoolPref(PREF);
|
||||
let definition = {value: value, configurable: true};
|
||||
Object.defineProperty(this, "restoreHiddenTabs", definition);
|
||||
return value;
|
||||
}
|
||||
|
||||
const PREF = "browser.sessionstore.restore_hidden_tabs";
|
||||
Services.prefs.addObserver(PREF, updateValue, false);
|
||||
return updateValue();
|
||||
}
|
||||
|
||||
const PREF = "browser.sessionstore.restore_hidden_tabs";
|
||||
Services.prefs.addObserver(PREF, updateValue, false);
|
||||
updateValue();
|
||||
},
|
||||
|
||||
// Resets the queue and removes all tabs.
|
||||
@ -4554,12 +4560,16 @@ let TabRestoreQueue = {
|
||||
let set;
|
||||
let {priority, hidden, visible} = this.tabs;
|
||||
|
||||
if (priority.length) {
|
||||
let {restoreOnDemand, restorePinnedTabsOnDemand} = this.prefs;
|
||||
let restorePinned = !(restoreOnDemand && restorePinnedTabsOnDemand);
|
||||
if (restorePinned && priority.length) {
|
||||
set = priority;
|
||||
} else if (visible.length) {
|
||||
set = visible;
|
||||
} else if (this.restoreHiddenTabs && hidden.length) {
|
||||
set = hidden;
|
||||
} else if (!restoreOnDemand) {
|
||||
if (visible.length) {
|
||||
set = visible;
|
||||
} else if (this.prefs.restoreHiddenTabs && hidden.length) {
|
||||
set = hidden;
|
||||
}
|
||||
}
|
||||
|
||||
return set && set.shift();
|
||||
|
@ -197,9 +197,6 @@
|
||||
@BINPATH@/components/dom_indexeddb.xpt
|
||||
@BINPATH@/components/dom_offline.xpt
|
||||
@BINPATH@/components/dom_json.xpt
|
||||
#ifdef MOZ_B2G_RIL
|
||||
@BINPATH@/components/dom_mms.xpt
|
||||
#endif
|
||||
@BINPATH@/components/dom_browserelement.xpt
|
||||
@BINPATH@/components/dom_power.xpt
|
||||
@BINPATH@/components/dom_quota.xpt
|
||||
|
@ -41,154 +41,149 @@ timestampFormat=%02S:%02S:%02S.%03S
|
||||
|
||||
helperFuncUnsupportedTypeError=Can't call pprint on this type of object.
|
||||
NetworkPanel.label=Inspect Network Request
|
||||
# LOCALIZATION NOTE (NetworkPanel.deltaDurationMS):
|
||||
#
|
||||
# This string is used to show the duration between two network events (e.g
|
||||
# request and response header or response header and response body).
|
||||
|
||||
# LOCALIZATION NOTE (NetworkPanel.deltaDurationMS): this string is used to
|
||||
# show the duration between two network events (e.g request and response
|
||||
# header or response header and response body). Parameters: %S is the duration.
|
||||
NetworkPanel.durationMS=%Sms
|
||||
# LOCALIZATION NOTE (NetworkPanel.imageSizeDeltaDurationMS):
|
||||
# This string is used to show the duration between the response header and the
|
||||
# response body event. It also shows the size of the received or cached image.
|
||||
#
|
||||
# The first %S is replace by the width of the inspected image.
|
||||
# The second %S is replaced by the height of the inspected image.
|
||||
# The third %S is replaced by the duration between the response header and the
|
||||
# response body event.
|
||||
NetworkPanel.imageSizeDeltaDurationMS=%Sx%Spx, Δ%Sms
|
||||
# LOCALIZATION NOTE (NetworkPanel.responseBodyUnableToDisplay.content):
|
||||
#
|
||||
# This string is displayed within the response body section of the NetworkPanel
|
||||
# if the content type of the network request can't be displayed in the
|
||||
# NetworkPanel. E.g. any kind of text is easy to display, but some audio or
|
||||
# flash data received from the server can't be displayed.
|
||||
#
|
||||
# The %S is replaced by the content type, that can't be displayed, examples are
|
||||
# o application/x-shockwave-flash
|
||||
# o music/crescendo
|
||||
|
||||
# LOCALIZATION NOTE (NetworkPanel.imageSizeDeltaDurationMS): this string is
|
||||
# used to show the duration between the response header and the response body
|
||||
# event. It also shows the size of the received or cached image. Parameters:
|
||||
# %1$S is the width of the inspected image, %2$S is the height of the
|
||||
# inspected image, %3$S is the duration between the response header and the
|
||||
# response body event. Example: 150x100px, Δ50ms.
|
||||
NetworkPanel.imageSizeDeltaDurationMS=%1$Sx%2$Spx, Δ%3$Sms
|
||||
|
||||
# LOCALIZATION NOTE (NetworkPanel.responseBodyUnableToDisplay.content): this
|
||||
# string is displayed within the response body section of the NetworkPanel if
|
||||
# the content type of the network request can't be displayed. E.g. any kind of
|
||||
# text is easy to display, but some audio or flash data received from the
|
||||
# server can't be displayed. Parameters: %S is the content type that can't be
|
||||
# displayed, examples are application/x-shockwave-flash, music/crescendo.
|
||||
NetworkPanel.responseBodyUnableToDisplay.content=Unable to display responses of type "%S"
|
||||
|
||||
ConsoleAPIDisabled=The Web Console logging API (console.log, console.info, console.warn, console.error) has been disabled by a script on this page.
|
||||
|
||||
# LOCALIZATION NOTE (webConsoleWindowTitleAndURL): The Web Console floating
|
||||
# panel title, followed by the web page URL.
|
||||
# For RTL languages you need to set the LRM in the string to give the URL
|
||||
# the correct direction.
|
||||
# LOCALIZATION NOTE (webConsoleWindowTitleAndURL): the Web Console floating
|
||||
# panel title. For RTL languages you need to set the LRM in the string to give
|
||||
# the URL the correct direction. Parameters: %S is the web page URL.
|
||||
webConsoleWindowTitleAndURL=Web Console - %S
|
||||
|
||||
# LOCALIZATION NOTE (webConsoleMixedContentWarning): Message displayed after a
|
||||
# URL in the Web Console that has been flagged for Mixed Content (i.e. http
|
||||
# content in an https page)
|
||||
# LOCALIZATION NOTE (webConsoleMixedContentWarning): the message displayed
|
||||
# after a URL in the Web Console that has been flagged for Mixed Content (i.e.
|
||||
# http content in an https page).
|
||||
webConsoleMixedContentWarning=Mixed Content
|
||||
|
||||
# LOCALIZATION NOTE (scratchpad.linkText):
|
||||
# The text used in the right hand side of the web console command line when
|
||||
# JavaScript is being entered, to indicate how to jump into scratchpad mode
|
||||
# LOCALIZATION NOTE (scratchpad.linkText): the text used in the right hand
|
||||
# side of the Web Console command line when JavaScript is being entered, to
|
||||
# indicate how to jump into scratchpad mode.
|
||||
scratchpad.linkText=Shift+RETURN - Open in Scratchpad
|
||||
|
||||
# LOCALIZATION NOTE (gcliterm.instanceLabel): The console displays
|
||||
# objects using their type (from the constructor function) in this descriptive
|
||||
# string
|
||||
# LOCALIZATION NOTE (gcliterm.instanceLabel): the console displays objects
|
||||
# using their type (from the constructor function) in this descriptive string.
|
||||
# Parameters: %S is the object type.
|
||||
gcliterm.instanceLabel=Instance of %S
|
||||
|
||||
# LOCALIZATION NOTE (stacktrace.anonymousFunction):
|
||||
# This string is used to display JavaScript functions that have no given name -
|
||||
# they are said to be anonymous. See stacktrace.outputMessage.
|
||||
# LOCALIZATION NOTE (stacktrace.anonymousFunction): this string is used to
|
||||
# display JavaScript functions that have no given name - they are said to be
|
||||
# anonymous. See also stacktrace.outputMessage.
|
||||
stacktrace.anonymousFunction=<anonymous>
|
||||
|
||||
# LOCALIZATION NOTE (stacktrace.outputMessage):
|
||||
# This string is used in the Web Console output to identify a web developer call
|
||||
# to console.trace(). The stack trace of JavaScript function calls is displayed.
|
||||
# In this minimal message we only show the last call.
|
||||
stacktrace.outputMessage=Stack trace from %S, function %S, line %S.
|
||||
# LOCALIZATION NOTE (stacktrace.outputMessage): this string is used in the Web
|
||||
# Console output to identify a web developer call to console.trace(). The
|
||||
# stack trace of JavaScript function calls is displayed. In this minimal
|
||||
# message we only show the last call. Parameters: %1$S is the file name, %2$S
|
||||
# is the function name, %3$S is the line number.
|
||||
stacktrace.outputMessage=Stack trace from %1$S, function %2$S, line %3$S.
|
||||
|
||||
# LOCALIZATION NOTE (timerStarted):
|
||||
# This string is used to display the result of the console.time() call.
|
||||
# %S=name of timer
|
||||
# LOCALIZATION NOTE (timerStarted): this string is used to display the result
|
||||
# of the console.time() call. Parameters: %S is the name of the timer.
|
||||
timerStarted=%S: timer started
|
||||
|
||||
# LOCALIZATION NOTE (timeEnd):
|
||||
# This string is used to display the result of the console.timeEnd() call.
|
||||
# %1$S=name of timer, %2$S=number of milliseconds
|
||||
# LOCALIZATION NOTE (timeEnd): this string is used to display the result of
|
||||
# the console.timeEnd() call. Parameters: %1$S is the name of the timer, %2$S
|
||||
# is the number of milliseconds.
|
||||
timeEnd=%1$S: %2$Sms
|
||||
|
||||
# LOCALIZATION NOTE (Autocomplete.blank):
|
||||
# This string is used when inputnode string containing anchor doesn't
|
||||
# doesn't matches to any property in the content.
|
||||
# LOCALIZATION NOTE (Autocomplete.blank): this string is used when inputnode
|
||||
# string containing anchor doesn't matches to any property in the content.
|
||||
Autocomplete.blank= <- no result
|
||||
|
||||
maxTimersExceeded=The maximum allowed number of timers in this page was exceeded.
|
||||
|
||||
# LOCALIZATION NOTE (JSTerm.updateNotInspectable):
|
||||
# This string is used when the user inspects an evaluation result in the Web
|
||||
# Console and tries the Update button, but the new result no longer returns an
|
||||
# object that can be inspected.
|
||||
# LOCALIZATION NOTE (JSTerm.updateNotInspectable): this string is used when
|
||||
# the user inspects an evaluation result in the Web Console and tries the
|
||||
# Update button, but the new result no longer returns an object that can be
|
||||
# inspected.
|
||||
JSTerm.updateNotInspectable=After your input has been re-evaluated the result is no longer inspectable.
|
||||
|
||||
# LOCALIZATION NOTE (remoteWebConsolePromptTitle): The title displayed on the
|
||||
# LOCALIZATION NOTE (remoteWebConsolePromptTitle): the title displayed on the
|
||||
# Web Console prompt asking for the remote host and port to connect to.
|
||||
remoteWebConsolePromptTitle=Remote Connection
|
||||
|
||||
# LOCALIZATION NOTE (remoteWebConsolePromptMessage): The message displayed on the
|
||||
# Web Console prompt asking for the remote host and port to connect to.
|
||||
# LOCALIZATION NOTE (remoteWebConsolePromptMessage): the message displayed on
|
||||
# the Web Console prompt asking for the remote host and port to connect to.
|
||||
remoteWebConsolePromptMessage=Enter hostname and port number (host:port)
|
||||
|
||||
# LOCALIZATION NOTE (remoteWebConsoleSelectTabTitle): The title displayed on the
|
||||
# Web Console prompt asking the user to pick a tab to attach to.
|
||||
# LOCALIZATION NOTE (remoteWebConsoleSelectTabTitle): the title displayed on
|
||||
# the Web Console prompt asking the user to pick a tab to attach to.
|
||||
remoteWebConsoleSelectTabTitle=Tab list - Remote Connection
|
||||
|
||||
# LOCALIZATION NOTE (remoteWebConsoleSelectTabMessage): The message displayed on the
|
||||
# Web Console prompt asking the user to pick a tab to attach to.
|
||||
# LOCALIZATION NOTE (remoteWebConsoleSelectTabMessage): the message displayed
|
||||
# on the Web Console prompt asking the user to pick a tab to attach to.
|
||||
remoteWebConsoleSelectTabMessage=Select one of the tabs you want to attach to, or select the global console.
|
||||
|
||||
# LOCALIZATION NOTE (listTabs.globalConsoleActor): The string displayed for the
|
||||
# global console in the tabs selection.
|
||||
# LOCALIZATION NOTE (listTabs.globalConsoleActor): the string displayed for
|
||||
# the global console in the tabs selection.
|
||||
listTabs.globalConsoleActor=*Global Console*
|
||||
|
||||
# LOCALIZATION NOTE (MenuWebconsole.label):
|
||||
# This string is displayed in the Tools menu as a shortcut to open the devtools
|
||||
# with the web console tab selected.
|
||||
# LOCALIZATION NOTE (MenuWebconsole.label): the string displayed in the Tools
|
||||
# menu as a shortcut to open the devtools with the Web Console tab selected.
|
||||
MenuWebconsole.label=Web Console
|
||||
|
||||
# LOCALIZATION NOTE (ToolboxTabWebconsole.label):
|
||||
# This string is displayed as the label of the tab in the devtools window.
|
||||
# LOCALIZATION NOTE (ToolboxTabWebconsole.label): the string displayed as the
|
||||
# label of the tab in the devtools window.
|
||||
ToolboxTabWebconsole.label=Console
|
||||
|
||||
# LOCALIZATION NOTE (ToolboxWebconsole.tooltip):
|
||||
# This string is displayed in the tooltip of the tab when the web console is
|
||||
# displayed inside the developer tools window.
|
||||
# LOCALIZATION NOTE (ToolboxWebconsole.tooltip): the string displayed in the
|
||||
# tooltip of the tab when the Web Console is displayed inside the developer
|
||||
# tools window.
|
||||
ToolboxWebconsole.tooltip=Web Console
|
||||
|
||||
# LOCALIZATION NOTE (longStringEllipsis): The string displayed after a long
|
||||
# string. This string is clickable such that the rest of the string is retrieved
|
||||
# from the server.
|
||||
# LOCALIZATION NOTE (longStringEllipsis): the string displayed after a long
|
||||
# string. This string is clickable such that the rest of the string is
|
||||
# retrieved from the server.
|
||||
longStringEllipsis=[…]
|
||||
|
||||
# LOCALIZATION NOTE (longStringTooLong): The string displayed after the user
|
||||
# LOCALIZATION NOTE (longStringTooLong): the string displayed after the user
|
||||
# tries to expand a long string.
|
||||
longStringTooLong=The string you are trying to view is too long to be displayed by the Web Console.
|
||||
|
||||
# LOCALIZATION NOTE (executeEmptyInput): This is displayed when the user tries
|
||||
# to execute code, but the input is empty.
|
||||
# LOCALIZATION NOTE (executeEmptyInput): the string displayed when the user
|
||||
# tries to execute code, but the input is empty.
|
||||
executeEmptyInput=No value to execute.
|
||||
|
||||
# LOCALIZATION NOTE (NetworkPanel.fetchRemainingResponseContentLink): This is
|
||||
# displayed in the network panel when the response body is only partially
|
||||
# available.
|
||||
NetworkPanel.fetchRemainingResponseContentLink=Fetch the remaining %1$S bytes
|
||||
# LOCALIZATION NOTE (NetworkPanel.fetchRemainingResponseContentLink): the
|
||||
# string displayed in the network panel when the response body is only
|
||||
# partially available. Parameters: %S is the amount of bytes that need to be
|
||||
# fetched.
|
||||
NetworkPanel.fetchRemainingResponseContentLink=Fetch the remaining %S bytes
|
||||
|
||||
# LOCALIZATION NOTE (NetworkPanel.fetchRemainingRequestContentLink): This is
|
||||
# displayed in the network panel when the request body is only partially
|
||||
# available.
|
||||
NetworkPanel.fetchRemainingRequestContentLink=Fetch the request body (%1$S bytes)
|
||||
# LOCALIZATION NOTE (NetworkPanel.fetchRemainingRequestContentLink): the
|
||||
# string displayed in the network panel when the request body is only
|
||||
# partially available. Parameters: %S is the amount of bytes that need to be
|
||||
# fetched.
|
||||
NetworkPanel.fetchRemainingRequestContentLink=Fetch the request body (%S bytes)
|
||||
|
||||
# LOCALIZATION NOTE (connectionTimeout): Message displayed when the Remote Web
|
||||
# LOCALIZATION NOTE (connectionTimeout): message displayed when the Remote Web
|
||||
# Console fails to connect to the server due to a timeout.
|
||||
connectionTimeout=Connection timeout. Check the Error Console on both ends for potential error messages. Reopen the Web Console to try again.
|
||||
|
||||
# LOCALIZATION NOTE (propertiesFilterPlaceholder): This is the text that
|
||||
# LOCALIZATION NOTE (propertiesFilterPlaceholder): this is the text that
|
||||
# appears in the filter text box for the properties view container.
|
||||
propertiesFilterPlaceholder=Filter properties
|
||||
|
||||
# LOCALIZATION NOTE (emptyPropertiesList): The text that is displayed in the
|
||||
# LOCALIZATION NOTE (emptyPropertiesList): the text that is displayed in the
|
||||
# properties pane when there are no properties to display.
|
||||
emptyPropertiesList=No properties to display
|
||||
|
||||
|
@ -384,7 +384,6 @@ this.DOMApplicationRegistry = {
|
||||
for (let id in this.webapps) {
|
||||
if (id in aData || this.webapps[id].removable)
|
||||
continue;
|
||||
delete this.webapps[id];
|
||||
// Remove the permissions, cookies and private data for this app.
|
||||
let localId = this.webapps[id].localId;
|
||||
let permMgr = Cc["@mozilla.org/permissionmanager;1"]
|
||||
@ -392,6 +391,7 @@ this.DOMApplicationRegistry = {
|
||||
permMgr.RemovePermissionsForApp(localId, false);
|
||||
Services.cookies.removeCookiesForApp(localId, false);
|
||||
this._clearPrivateData(localId, false);
|
||||
delete this.webapps[id];
|
||||
}
|
||||
|
||||
let appDir = FileUtils.getDir("coreAppsDir", ["webapps"], false);
|
||||
|
@ -1319,7 +1319,8 @@ nsJSContext::CompileScript(const PRUnichar* aText,
|
||||
|
||||
NS_ENSURE_ARG_POINTER(aPrincipal);
|
||||
|
||||
AutoPushJSContext cx(mContext);
|
||||
JSContext* cx = mContext;
|
||||
JSAutoRequest ar(cx);
|
||||
JS::Rooted<JSObject*> scopeObject(mContext, GetNativeGlobal());
|
||||
xpc_UnmarkGrayObject(scopeObject);
|
||||
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "GeneratedEvents.h"
|
||||
|
||||
#include "nsContentUtils.h"
|
||||
#include "nsCxPusher.h"
|
||||
#include "nsDOMClassInfo.h"
|
||||
#include "nsIDOMBluetoothDeviceEvent.h"
|
||||
#include "nsTArrayHelpers.h"
|
||||
@ -103,7 +104,8 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
rv = nsTArrayToJSArray(sc->GetNativeContext(), devices, &JsDevices);
|
||||
AutoPushJSContext cx(sc->GetNativeContext());
|
||||
rv = nsTArrayToJSArray(cx, devices, &JsDevices);
|
||||
if (!JsDevices) {
|
||||
NS_WARNING("Cannot create JS array!");
|
||||
SetError(NS_LITERAL_STRING("BluetoothError"));
|
||||
@ -259,9 +261,8 @@ BluetoothAdapter::SetPropertyByValue(const BluetoothNamedValue& aValue)
|
||||
nsIScriptContext* sc = GetContextForEventHandlers(&rv);
|
||||
NS_ENSURE_SUCCESS_VOID(rv);
|
||||
|
||||
if (NS_FAILED(nsTArrayToJSArray(sc->GetNativeContext(),
|
||||
mUuids,
|
||||
&mJsUuids))) {
|
||||
AutoPushJSContext cx(sc->GetNativeContext());
|
||||
if (NS_FAILED(nsTArrayToJSArray(cx, mUuids, &mJsUuids))) {
|
||||
NS_WARNING("Cannot set JS UUIDs object!");
|
||||
return;
|
||||
}
|
||||
@ -278,8 +279,8 @@ BluetoothAdapter::SetPropertyByValue(const BluetoothNamedValue& aValue)
|
||||
nsIScriptContext* sc = GetContextForEventHandlers(&rv);
|
||||
NS_ENSURE_SUCCESS_VOID(rv);
|
||||
|
||||
if (NS_FAILED(nsTArrayToJSArray(sc->GetNativeContext(),
|
||||
mDeviceAddresses,
|
||||
AutoPushJSContext cx(sc->GetNativeContext());
|
||||
if (NS_FAILED(nsTArrayToJSArray(cx, mDeviceAddresses,
|
||||
&mJsDeviceAddresses))) {
|
||||
NS_WARNING("Cannot set JS Devices object!");
|
||||
return;
|
||||
|
@ -122,9 +122,9 @@ BluetoothDevice::SetPropertyByValue(const BluetoothNamedValue& aValue)
|
||||
nsIScriptContext* sc = GetContextForEventHandlers(&rv);
|
||||
NS_ENSURE_SUCCESS_VOID(rv);
|
||||
|
||||
if (NS_FAILED(nsTArrayToJSArray(sc->GetNativeContext(),
|
||||
mUuids,
|
||||
&mJsUuids))) {
|
||||
AutoPushJSContext cx(sc->GetNativeContext());
|
||||
|
||||
if (NS_FAILED(nsTArrayToJSArray(cx, mUuids, &mJsUuids))) {
|
||||
NS_WARNING("Cannot set JS UUIDs object!");
|
||||
return;
|
||||
}
|
||||
@ -135,9 +135,9 @@ BluetoothDevice::SetPropertyByValue(const BluetoothNamedValue& aValue)
|
||||
nsIScriptContext* sc = GetContextForEventHandlers(&rv);
|
||||
NS_ENSURE_SUCCESS_VOID(rv);
|
||||
|
||||
if (NS_FAILED(nsTArrayToJSArray(sc->GetNativeContext(),
|
||||
mServices,
|
||||
&mJsServices))) {
|
||||
AutoPushJSContext cx(sc->GetNativeContext());
|
||||
|
||||
if (NS_FAILED(nsTArrayToJSArray(cx, mServices, &mJsServices))) {
|
||||
NS_WARNING("Cannot set JS Services object!");
|
||||
return;
|
||||
}
|
||||
|
@ -68,7 +68,8 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
JSContext* cx = sc->GetNativeContext();
|
||||
AutoPushJSContext cx(sc->GetNativeContext());
|
||||
|
||||
JS::Rooted<JSObject*> global(cx, sc->GetNativeGlobal());
|
||||
rv = nsContentUtils::WrapNative(cx, global, adapter, aValue);
|
||||
if (NS_FAILED(rv)) {
|
||||
@ -86,7 +87,7 @@ public:
|
||||
BluetoothReplyRunnable::ReleaseMembers();
|
||||
mManagerPtr = nullptr;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
nsRefPtr<BluetoothManager> mManagerPtr;
|
||||
};
|
||||
|
@ -752,7 +752,14 @@ BluetoothService::Observe(nsISupports* aSubject, const char* aTopic,
|
||||
void
|
||||
BluetoothService::Notify(const BluetoothSignal& aData)
|
||||
{
|
||||
/**
|
||||
* We'd like to keep old mechanisms for now and remove them after Bug 873917
|
||||
* is fixed. Basically, three system messages are going to be merged into one
|
||||
* with an extra property named 'method' for distinguishing pairing method.
|
||||
* Please see Bug 853235 for more details.
|
||||
*/
|
||||
nsString type = NS_LITERAL_STRING("bluetooth-pairing-request");
|
||||
nsAutoString oldType;
|
||||
|
||||
AutoSafeJSContext cx;
|
||||
NS_ASSERTION(!::JS_IsExceptionPending(cx),
|
||||
@ -772,24 +779,27 @@ BluetoothService::Notify(const BluetoothSignal& aData)
|
||||
BT_LOG("[S] %s: %s", __FUNCTION__, NS_ConvertUTF16toUTF8(aData.name()).get());
|
||||
|
||||
if (aData.name().EqualsLiteral("RequestConfirmation")) {
|
||||
NS_ASSERTION(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 4,
|
||||
MOZ_ASSERT(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 4,
|
||||
"RequestConfirmation: Wrong length of parameters");
|
||||
oldType.AssignLiteral("bluetooth-requestconfirmation");
|
||||
} else if (aData.name().EqualsLiteral("RequestPinCode")) {
|
||||
NS_ASSERTION(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 3,
|
||||
MOZ_ASSERT(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 3,
|
||||
"RequestPinCode: Wrong length of parameters");
|
||||
oldType.AssignLiteral("bluetooth-requestpincode");
|
||||
} else if (aData.name().EqualsLiteral("RequestPasskey")) {
|
||||
NS_ASSERTION(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 3,
|
||||
MOZ_ASSERT(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 3,
|
||||
"RequestPinCode: Wrong length of parameters");
|
||||
oldType.AssignLiteral("bluetooth-requestpasskey");
|
||||
} else if (aData.name().EqualsLiteral("Authorize")) {
|
||||
NS_ASSERTION(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 2,
|
||||
MOZ_ASSERT(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 2,
|
||||
"Authorize: Wrong length of parameters");
|
||||
type.AssignLiteral("bluetooth-authorize");
|
||||
} else if (aData.name().EqualsLiteral("Cancel")) {
|
||||
NS_ASSERTION(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 0,
|
||||
MOZ_ASSERT(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 0,
|
||||
"Cancel: Wrong length of parameters");
|
||||
type.AssignLiteral("bluetooth-cancel");
|
||||
} else if (aData.name().EqualsLiteral("PairedStatusChanged")) {
|
||||
NS_ASSERTION(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 1,
|
||||
MOZ_ASSERT(aData.value().get_ArrayOfBluetoothNamedValue().Length() == 1,
|
||||
"PairedStatusChagned: Wrong length of parameters");
|
||||
type.AssignLiteral("bluetooth-pairedstatuschanged");
|
||||
} else {
|
||||
@ -805,4 +815,8 @@ BluetoothService::Notify(const BluetoothSignal& aData)
|
||||
NS_ENSURE_TRUE_VOID(systemMessenger);
|
||||
|
||||
systemMessenger->BroadcastMessage(type, OBJECT_TO_JSVAL(obj));
|
||||
|
||||
if (!oldType.IsEmpty()) {
|
||||
systemMessenger->BroadcastMessage(oldType, OBJECT_TO_JSVAL(obj));
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +0,0 @@
|
||||
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# 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/.
|
||||
|
||||
XPIDL_SOURCES += [
|
||||
'nsIMmsService.idl',
|
||||
'nsIWapPushApplication.idl',
|
||||
]
|
||||
|
||||
XPIDL_MODULE = 'dom_mms'
|
||||
|
@ -1,10 +0,0 @@
|
||||
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# 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/.
|
||||
|
||||
PARALLEL_DIRS += ['interfaces', 'src']
|
||||
|
||||
if CONFIG['MOZ_B2G_RIL'] and CONFIG['ENABLE_TESTS']:
|
||||
XPCSHELL_TESTS_MANIFESTS += ['tests/xpcshell.ini']
|
@ -1,30 +0,0 @@
|
||||
# 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/.
|
||||
|
||||
DEPTH = @DEPTH@
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = \
|
||||
$(srcdir) \
|
||||
$(NULL)
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
ifdef MOZ_B2G_RIL
|
||||
EXTRA_COMPONENTS = \
|
||||
ril/MmsService.js \
|
||||
ril/MmsService.manifest \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_JS_MODULES = \
|
||||
ril/mms_consts.js \
|
||||
ril/MmsPduHelper.jsm \
|
||||
ril/wap_consts.js \
|
||||
ril/WapPushManager.js \
|
||||
ril/WspPduHelper.jsm \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
include $(topsrcdir)/config/rules.mk
|
@ -1,6 +0,0 @@
|
||||
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# 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/.
|
||||
|
@ -1,7 +0,0 @@
|
||||
[DEFAULT]
|
||||
head = header_helpers.js
|
||||
tail =
|
||||
|
||||
[test_wsp_pdu_helper.js]
|
||||
[test_mms_pdu_helper.js]
|
||||
[test_mms_service.js]
|
@ -16,11 +16,13 @@ XPIDL_SOURCES += [
|
||||
'nsIDOMSmsFilter.idl',
|
||||
'nsIDOMSmsManager.idl',
|
||||
'nsIDOMSmsSegmentInfo.idl',
|
||||
'nsIMmsService.idl',
|
||||
'nsIMobileMessageCallback.idl',
|
||||
'nsIMobileMessageCursorCallback.idl',
|
||||
'nsIMobileMessageDatabaseService.idl',
|
||||
'nsIMobileMessageService.idl',
|
||||
'nsISmsService.idl',
|
||||
'nsIWapPushApplication.idl',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_B2G_RIL']:
|
||||
|
@ -63,9 +63,19 @@ LOCAL_INCLUDES += \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_COMPONENTS = \
|
||||
ril/MmsService.js \
|
||||
ril/MmsService.manifest \
|
||||
ril/MobileMessageDatabaseService.js \
|
||||
ril/MobileMessageDatabaseService.manifest \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_JS_MODULES = \
|
||||
ril/mms_consts.js \
|
||||
ril/MmsPduHelper.jsm \
|
||||
ril/wap_consts.js \
|
||||
ril/WapPushManager.js \
|
||||
ril/WspPduHelper.jsm \
|
||||
$(NULL)
|
||||
else
|
||||
CPPSRCS += \
|
||||
MobileMessageDatabaseService.cpp \
|
||||
|
@ -1,8 +1,6 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
|
||||
|
||||
function do_check_throws(f, result, stack) {
|
||||
if (!stack) {
|
||||
stack = Components.stack.caller;
|
||||
|
@ -1,5 +1,11 @@
|
||||
[DEFAULT]
|
||||
head =
|
||||
head = header_helpers.js
|
||||
tail =
|
||||
|
||||
[test_smsservice_createsmsmessage.js]
|
||||
[test_wsp_pdu_helper.js]
|
||||
run-if = toolkit == "gonk"
|
||||
[test_mms_pdu_helper.js]
|
||||
run-if = toolkit == "gonk"
|
||||
[test_mms_service.js]
|
||||
run-if = toolkit == "gonk"
|
||||
|
@ -57,7 +57,6 @@ PARALLEL_DIRS += [
|
||||
'quota',
|
||||
'settings',
|
||||
'mobilemessage',
|
||||
'mms',
|
||||
'src',
|
||||
'time',
|
||||
'locales',
|
||||
|
@ -14,7 +14,7 @@ this.PHONE_NUMBER_META_DATA = {
|
||||
"852": '["HK","00",,,,,"\\d{5,11}","[235-7]\\d{7}|8\\d{7,8}|9\\d{4,10}",[["(\\d{4})(\\d{4})","$1 $2","[235-7]|[89](?:0[1-9]|[1-9])",,],["(800)(\\d{3})(\\d{3})","$1 $2 $3","800",,],["(900)(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4","900",,],["(900)(\\d{2,5})","$1 $2","900",,]]]',
|
||||
"998": '["UZ","810","8",,,"$NP $FG","\\d{7,9}","[679]\\d{8}",[["([679]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
|
||||
"291": '["ER","00","0",,,"$NP$FG","\\d{6,7}","[178]\\d{6}",[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",,,]]]',
|
||||
"95": '["MM","00","0",,,"$NP$FG","\\d{5,10}","[14578]\\d{5,7}|[26]\\d{5,8}|9(?:[258]|4\\d{1,2}|[679]\\d?)\\d{6}",[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","1|2[45]",,],["(2)(\\d{4})(\\d{4})","$1 $2 $3","251",,],["(\\d)(\\d{2})(\\d{3})","$1 $2 $3","16|2",,],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","67|81",,],["(\\d{2})(\\d{2})(\\d{3,4})","$1 $2 $3","[4-8]",,],["(9)(\\d{3})(\\d{4,5})","$1 $2 $3","9(?:[25-9]|4[13789])",,],["(9)(4\\d{4})(\\d{4})","$1 $2 $3","94[0245]",,]]]',
|
||||
"95": '["MM","00","0",,,"$NP$FG","\\d{5,10}","[14578]\\d{5,7}|[26]\\d{5,8}|9(?:[258]|3\\d|4\\d{1,2}|[679]\\d?)\\d{6}",[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","1|2[45]",,],["(2)(\\d{4})(\\d{4})","$1 $2 $3","251",,],["(\\d)(\\d{2})(\\d{3})","$1 $2 $3","16|2",,],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","67|81",,],["(\\d{2})(\\d{2})(\\d{3,4})","$1 $2 $3","[4-8]",,],["(9)(\\d{3})(\\d{4,5})","$1 $2 $3","9(?:[235-9]|4[13789])",,],["(9)(4\\d{4})(\\d{4})","$1 $2 $3","94[0245]",,]]]',
|
||||
"266": '["LS","00",,,,,"\\d{8}","[2568]\\d{7}",[["(\\d{4})(\\d{4})","$1 $2",,,]]]',
|
||||
"245": '["GW","00",,,,,"\\d{7}","[3567]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
|
||||
"374": '["AM","00","0",,,"($NP$FG)","\\d{5,8}","[1-9]\\d{7}",[["(\\d{2})(\\d{6})","$1 $2","1|47",,],["(\\d{2})(\\d{6})","$1 $2","[5-7]|9[1-9]","$NP$FG",],["(\\d{3})(\\d{5})","$1 $2","[23]",,],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3","8|90","$NP $FG",]]]',
|
||||
@ -72,7 +72,7 @@ this.PHONE_NUMBER_META_DATA = {
|
||||
"239": '["ST","00",,,,,"\\d{7}","[29]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
|
||||
"357": '["CY","00",,,,,"\\d{8}","[257-9]\\d{7}",[["(\\d{2})(\\d{6})","$1 $2",,,]]]',
|
||||
"240": '["GQ","00",,,,,"\\d{9}","[23589]\\d{8}",[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","[235]",,],["(\\d{3})(\\d{6})","$1 $2","[89]",,]]]',
|
||||
"506": '["CR","00",,"(19(?:0[0-2468]|19|66|77))",,,"\\d{8,10}","[24-9]\\d{7,9}",[["(\\d{4})(\\d{4})","$1 $2","[24-7]|8[3-9]",,],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","[89]0",,]]]',
|
||||
"506": '["CR","00",,"(19(?:0[0-2468]|19|20|66|77))",,,"\\d{8,10}","[24-9]\\d{7,9}",[["(\\d{4})(\\d{4})","$1 $2","[24-7]|8[3-9]",,],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","[89]0",,]]]',
|
||||
"86": '["CN","(1[1279]\\d{3})?00","0","(1[1279]\\d{3})|0",,,"\\d{4,12}","[1-7]\\d{7,11}|8[0-357-9]\\d{6,9}|9(?:5\\d{3}|\\d{9})",[["(80\\d{2})(\\d{4})","$1 $2","80[2678]","$NP$FG",],["([48]00)(\\d{3})(\\d{4})","$1 $2 $3","[48]00",,],["(\\d{5})","$1","95",,],["(\\d{3,4})(\\d{4})","$1 $2","[2-9]",,"NA"],["(21)(\\d{4})(\\d{4,6})","$1 $2 $3","21","$NP$FG",],["([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3","10[1-9]|2[02-9]","$NP$FG",],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3","3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1|2[37]|3[12]|51|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|8(?:71|98)","$NP$FG",],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|3|5[1-9]|7[02-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])","$NP$FG",],["(1[3-58]\\d)(\\d{4})(\\d{4})","$1 $2 $3","1[3-58]",,],["(10800)(\\d{3})(\\d{4})","$1 $2 $3","108",,]]]',
|
||||
"257": '["BI","00",,,,,"\\d{8}","[27]\\d{7}",[["([27]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
|
||||
"683": '["NU","00",,,,,"\\d{4}","[1-5]\\d{3}",]',
|
||||
@ -80,7 +80,7 @@ this.PHONE_NUMBER_META_DATA = {
|
||||
"247": '["AC","00",,,,,"\\d{4}","[2-467]\\d{3}",]',
|
||||
"675": '["PG","00",,,,,"\\d{7,8}","[1-9]\\d{6,7}",[["(\\d{3})(\\d{4})","$1 $2","[1-689]",,],["(7\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","7",,]]]',
|
||||
"376": '["AD","00",,,,,"\\d{6,8}","(?:[346-9]|180)\\d{5}",[["(\\d{3})(\\d{3})","$1 $2","[346-9]",,],["(180[02])(\\d{4})","$1 $2","1",,]]]',
|
||||
"63": '["PH","00","0",,,,"\\d{7,13}","[2-9]\\d{7,9}|1800\\d{7,9}",[["(2)(\\d{3})(\\d{4})","$1 $2 $3","2","($NP$FG)",],["(\\d{4})(\\d{5})","$1 $2","3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|5(?:22|44)|642|8(?:62|8[245])","($NP$FG)",],["(\\d{5})(\\d{4})","$1 $2","346|4(?:27|9[35])|883","($NP$FG)",],["([3-8]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[3-8]","($NP$FG)",],["(9\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","9","$NP$FG",],["(1800)(\\d{3})(\\d{4})","$1 $2 $3","1",,],["(1800)(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4","1",,]]]',
|
||||
"63": '["PH","00","0",,,,"\\d{7,13}","[2-9]\\d{7,9}|1800\\d{7,9}",[["(2)(\\d{3})(\\d{4})","$1 $2 $3","2","($NP$FG)",],["(\\d{4})(\\d{5})","$1 $2","3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|5(?:22|44)|642|8(?:62|8[245])","($NP$FG)",],["(\\d{5})(\\d{4})","$1 $2","346|4(?:27|9[35])|883","($NP$FG)",],["([3-8]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[3-8]","($NP$FG)",],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","81|9","$NP$FG",],["(1800)(\\d{3})(\\d{4})","$1 $2 $3","1",,],["(1800)(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4","1",,]]]',
|
||||
"236": '["CF","00",,,,,"\\d{8}","[278]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
|
||||
"590": ['["GP","00","0",,,"$NP$FG","\\d{9}","[56]\\d{8}",[["([56]90)(\\d{2})(\\d{4})","$1 $2-$3",,,]]]','["BL","00","0",,,,"\\d{9}","[56]\\d{8}",]','["MF","00","0",,,,"\\d{9}","[56]\\d{8}",]'],
|
||||
"53": '["CU","119","0",,,"($NP$FG)","\\d{4,8}","[2-57]\\d{5,7}",[["(\\d)(\\d{6,7})","$1 $2","7",,],["(\\d{2})(\\d{4,6})","$1 $2","[2-4]",,],["(\\d)(\\d{7})","$1 $2","5","$NP$FG",]]]',
|
||||
@ -112,10 +112,10 @@ this.PHONE_NUMBER_META_DATA = {
|
||||
"964": '["IQ","00","0",,,"$NP$FG","\\d{6,10}","[1-7]\\d{7,9}",[["(1)(\\d{3})(\\d{4})","$1 $2 $3","1",,],["([2-6]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","[2-6]",,],["(7\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","7",,]]]',
|
||||
"225": '["CI","00",,,,,"\\d{8}","[02-6]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
|
||||
"992": '["TJ","810","8",,,"($NP) $FG","\\d{3,9}","[3-59]\\d{8}",[["([349]\\d{2})(\\d{2})(\\d{4})","$1 $2 $3","[34]7|91[78]",,],["([459]\\d)(\\d{3})(\\d{4})","$1 $2 $3","4[48]|5|9(?:1[59]|[0235-9])",,],["(331700)(\\d)(\\d{2})","$1 $2 $3","331",,],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3","3[1-5]",,]]]',
|
||||
"55": '["BR","00(?:1[45]|2[135]|[34]1|43)","0","0(?:(1[245]|2[135]|[34]1)(\\d{10,11}))?","$2",,"\\d{8,11}","[1-46-9]\\d{7,10}|5\\d{8,9}",[["(\\d{4})(\\d{4})","$1-$2","[2-9](?:[1-9]|0[1-9])","$FG","NA"],["(\\d{5})(\\d{4})","$1-$2","9(?:[1-9]|0[1-9])","$FG","NA"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3","119","($FG)",],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3","[1-9][1-9]","($FG)",],["([34]00\\d)(\\d{4})","$1-$2","[34]00",,],["([3589]00)(\\d{2,3})(\\d{4})","$1 $2 $3","[3589]00","$NP$FG",]]]',
|
||||
"55": '["BR","00(?:1[45]|2[135]|[34]1|43)","0","0(?:(1[245]|2[135]|[34]1)(\\d{10,11}))?","$2",,"\\d{8,11}","[1-46-9]\\d{7,10}|5\\d{8,9}",[["(\\d{4})(\\d{4})","$1-$2","[2-9](?:[1-9]|0[1-9])","$FG","NA"],["(\\d{5})(\\d{4})","$1-$2","9(?:[1-9]|0[1-9])","$FG","NA"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3","1[1-9]9","($FG)",],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3","[1-9][1-9]","($FG)",],["([34]00\\d)(\\d{4})","$1-$2","[34]00",,],["([3589]00)(\\d{2,3})(\\d{4})","$1 $2 $3","[3589]00","$NP$FG",]]]',
|
||||
"674": '["NR","00",,,,,"\\d{7}","[458]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
|
||||
"967": '["YE","00","0",,,"$NP$FG","\\d{6,9}","[1-7]\\d{6,8}",[["([1-7])(\\d{3})(\\d{3,4})","$1 $2 $3","[1-6]|7[24-68]",,],["(7\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","7[0137]",,]]]',
|
||||
"49": '["DE","00","0",,,"$NP$FG","\\d{2,15}","[1-35-9]\\d{3,14}|4(?:[0-8]\\d{4,12}|9(?:[0-37]\\d|4(?:[1-35-8]|4\\d?)|5\\d{1,2}|6[1-8]\\d?)\\d{2,7})",[["(\\d{2})(\\d{4,11})","$1 $2","3[02]|40|[68]9",,],["(\\d{3})(\\d{3,11})","$1 $2","2(?:\\d1|0[2389]|1[24]|28|34)|3(?:[3-9][15]|40)|[4-8][1-9]1|9(?:06|[1-9]1)",,],["(\\d{4})(\\d{2,11})","$1 $2","[24-6]|[7-9](?:\\d[1-9]|[1-9]\\d)|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])",,],["(\\d{5})(\\d{1,10})","$1 $2","3",,],["(1\\d{2})(\\d{7,8})","$1 $2","1[5-7]",,],["(177)(99)(\\d{7,8})","$1 $2 $3","177",,],["(8\\d{2})(\\d{7,10})","$1 $2","800",,],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3","(?:18|90)0",,],["(1\\d{2})(\\d{5,11})","$1 $2","181",,],["(18\\d{3})(\\d{6})","$1 $2","185",,],["(18\\d{2})(\\d{7})","$1 $2","18[68]",,],["(18\\d)(\\d{8})","$1 $2","18[2-579]",,],["(700)(\\d{4})(\\d{4})","$1 $2 $3","700",,]]]',
|
||||
"49": '["DE","00","0",,,"$NP$FG","\\d{2,15}","[1-35-9]\\d{3,14}|4(?:[0-8]\\d{4,12}|9(?:[0-37]\\d|4(?:[1-35-8]|4\\d?)|5\\d{1,2}|6[1-8]\\d?)\\d{2,7})",[["(1\\d{2})(\\d{7,8})","$1 $2","1[67]",,],["(1\\d{3})(\\d{7})","$1 $2","15",,],["(\\d{2})(\\d{4,11})","$1 $2","3[02]|40|[68]9",,],["(\\d{3})(\\d{3,11})","$1 $2","2(?:\\d1|0[2389]|1[24]|28|34)|3(?:[3-9][15]|40)|[4-8][1-9]1|9(?:06|[1-9]1)",,],["(\\d{4})(\\d{2,11})","$1 $2","[24-6]|[7-9](?:\\d[1-9]|[1-9]\\d)|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])",,],["(3\\d{4})(\\d{1,10})","$1 $2","3",,],["(800)(\\d{7,10})","$1 $2","800",,],["(177)(99)(\\d{7,8})","$1 $2 $3","177",,],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3","(?:18|90)0",,],["(1\\d{2})(\\d{5,11})","$1 $2","181",,],["(18\\d{3})(\\d{6})","$1 $2","185",,],["(18\\d{2})(\\d{7})","$1 $2","18[68]",,],["(18\\d)(\\d{8})","$1 $2","18[2-579]",,],["(700)(\\d{4})(\\d{4})","$1 $2 $3","700",,]]]',
|
||||
"31": '["NL","00","0",,,"$NP$FG","\\d{5,10}","1\\d{4,8}|[2-7]\\d{8}|[89]\\d{6,9}",[["([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3","1[035]|2[0346]|3[03568]|4[0356]|5[0358]|7|8[458]",,],["([1-5]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","1[16-8]|2[259]|3[124]|4[17-9]|5[124679]",,],["(6)(\\d{8})","$1 $2","6[0-57-9]",,],["(66)(\\d{7})","$1 $2","66",,],["(14)(\\d{3,4})","$1 $2","14","$FG",],["([89]0\\d)(\\d{4,7})","$1 $2","80|9",,]]]',
|
||||
"970": '["PS","00","0",,,"$NP$FG","\\d{4,10}","[24589]\\d{7,8}|1(?:[78]\\d{8}|[49]\\d{2,3})",[["([2489])(2\\d{2})(\\d{4})","$1 $2 $3","[2489]",,],["(5[69]\\d)(\\d{3})(\\d{3})","$1 $2 $3","5",,],["(1[78]00)(\\d{3})(\\d{3})","$1 $2 $3","1[78]","$FG",]]]',
|
||||
"58": '["VE","00","0","(1\\d{2})|0",,"$NP$FG","\\d{7,10}","[24589]\\d{9}",[["(\\d{3})(\\d{7})","$1-$2",,,]]]',
|
||||
@ -142,8 +142,8 @@ this.PHONE_NUMBER_META_DATA = {
|
||||
"993": '["TM","810","8",,,"($NP $FG)","\\d{8}","[1-6]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4","12",,],["(\\d{2})(\\d{6})","$1 $2","6","$NP $FG",],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4","13|[2-5]",,]]]',
|
||||
"888": '["001",,,,,,"\\d{11}","\\d{11}",[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",,,]]]',
|
||||
"353": '["IE","00","0",,,"($NP$FG)","\\d{5,10}","[124-9]\\d{6,9}",[["(1)(\\d{3,4})(\\d{4})","$1 $2 $3","1",,],["(\\d{2})(\\d{5})","$1 $2","2[24-9]|47|58|6[237-9]|9[35-9]",,],["(\\d{3})(\\d{5})","$1 $2","40[24]|50[45]",,],["(48)(\\d{4})(\\d{4})","$1 $2 $3","48",,],["(818)(\\d{3})(\\d{3})","$1 $2 $3","81",,],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","[24-69]|7[14]",,],["([78]\\d)(\\d{3,4})(\\d{4})","$1 $2 $3","76|8[35-9]","$NP$FG",],["(700)(\\d{3})(\\d{3})","$1 $2 $3","70","$NP$FG",],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3","1(?:8[059]|5)","$FG",]]]',
|
||||
"966": '["SA","00","0",,,"$NP$FG","\\d{7,10}","(?:[1-467]|92)\\d{7}|5\\d{8}|8\\d{9}",[["([1-467])(\\d{3})(\\d{4})","$1 $2 $3","[1-467]",,],["(5\\d)(\\d{3})(\\d{4})","$1 $2 $3","5",,],["(9200)(\\d{5})","$1 $2","9","$FG",],["(800)(\\d{3})(\\d{4})","$1 $2 $3","80","$FG",],["(8111)(\\d{3})(\\d{3})","$1 $2 $3","81",,]]]',
|
||||
"380": '["UA","00","0",,,"$NP$FG","\\d{5,9}","[3-689]\\d{8}",[["([3-69]\\d)(\\d{3})(\\d{4})","$1 $2 $3","39|4(?:[45][0-5]|87)|5(?:0|6[37]|7[37])|6[36-8]|9[1-9]",,],["([3-689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","3[1-8]2|4[1378]2|5(?:[12457]2|6[24])|6(?:[49]2|[12][29]|5[24])|8|90",,],["([3-6]\\d{3})(\\d{5})","$1 $2","3(?:5[013-9]|[1-46-8])|4(?:[137][013-9]|6|[45][6-9]|8[4-6])|5(?:[1245][013-9]|6[0135-9]|3|7[4-6])|6(?:[49][013-9]|5[0135-9]|[12][13-8])",,]]]',
|
||||
"966": '["SA","00","0",,,"$NP$FG","\\d{7,10}","1\\d{7,8}|(?:[2-467]|92)\\d{7}|5\\d{8}|8\\d{9}",[["([1-467])(\\d{3})(\\d{4})","$1 $2 $3","[1-467]",,],["(1\\d)(\\d{3})(\\d{4})","$1 $2 $3","1[1-467]",,],["(5\\d)(\\d{3})(\\d{4})","$1 $2 $3","5",,],["(92\\d{2})(\\d{5})","$1 $2","9","$FG",],["(800)(\\d{3})(\\d{4})","$1 $2 $3","80","$FG",],["(811)(\\d{3})(\\d{3,4})","$1 $2 $3","81",,]]]',
|
||||
"380": '["UA","00","0",,,"$NP$FG","\\d{5,9}","[3-689]\\d{8}",[["([3-689]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[38]9|4(?:[45][0-5]|87)|5(?:0|6[37]|7[37])|6[36-8]|9[1-9]",,],["([3-689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","3[1-8]2|4[13678]2|5(?:[12457]2|6[24])|6(?:[49]2|[12][29]|5[24])|8[0-8]|90",,],["([3-6]\\d{3})(\\d{5})","$1 $2","3(?:5[013-9]|[1-46-8])|4(?:[137][013-9]|6|[45][6-9]|8[4-6])|5(?:[1245][013-9]|6[0135-9]|3|7[4-6])|6(?:[49][013-9]|5[0135-9]|[12][13-8])",,]]]',
|
||||
"98": '["IR","00","0",,,"$NP$FG","\\d{4,10}","[14-8]\\d{6,9}|[23]\\d{5,9}|9(?:[1-4]\\d{8}|9\\d{2,8})",[["(21)(\\d{3,5})","$1 $2","21",,],["(21)(\\d{3})(\\d{3,4})","$1 $2 $3","21",,],["(2[16])(\\d{4})(\\d{4})","$1 $2 $3","2[16]",,],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3","[13-9]|2[02-9]",,]]]',
|
||||
"971": '["AE","00","0",,,"$NP$FG","\\d{5,12}","[2-79]\\d{7,8}|800\\d{2,9}",[["([2-4679])(\\d{3})(\\d{4})","$1 $2 $3","[2-4679][2-8]",,],["(5[0256])(\\d{3})(\\d{4})","$1 $2 $3","5",,],["([479]00)(\\d)(\\d{5})","$1 $2 $3","[479]0","$FG",],["([68]00)(\\d{2,9})","$1 $2","60|8","$FG",]]]',
|
||||
"30": '["GR","00",,,,,"\\d{10}","[26-9]\\d{9}",[["([27]\\d)(\\d{4})(\\d{4})","$1 $2 $3","21|7",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","2[2-9]1|[689]",,],["(2\\d{3})(\\d{6})","$1 $2","2[2-9][02-9]",,]]]',
|
||||
@ -154,7 +154,7 @@ this.PHONE_NUMBER_META_DATA = {
|
||||
"372": '["EE","00",,,,,"\\d{4,10}","1\\d{3,4}|[3-9]\\d{6,7}|800\\d{6,7}",[["([3-79]\\d{2})(\\d{4})","$1 $2","[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]",,],["(70)(\\d{2})(\\d{4})","$1 $2 $3","70",,],["(8000)(\\d{3})(\\d{3})","$1 $2 $3","800",,],["([458]\\d{3})(\\d{3,4})","$1 $2","40|5|8(?:00|[1-5])",,]]]',
|
||||
"598": '["UY","0(?:1[3-9]\\d|0)","0",,,,"\\d{7,8}","[2489]\\d{6,7}",[["(\\d{4})(\\d{4})","$1 $2","[24]",,],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","9[1-9]","$NP$FG",],["(\\d{3})(\\d{4})","$1 $2","[89]0","$NP$FG",]]]',
|
||||
"502": '["GT","00",,,,,"\\d{8}(?:\\d{3})?","[2-7]\\d{7}|1[89]\\d{9}",[["(\\d{4})(\\d{4})","$1 $2","[2-7]",,],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3","1",,]]]',
|
||||
"82": '["KR","00(?:[124-68]|[37]\\d{2})","0","0(8[1-46-8]|85\\d{2})?",,"$NP$FG","\\d{4,10}","[1-7]\\d{3,9}|8\\d{8}",[["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3","1(?:0|1[19]|[69]9|5[458])|[57]0",,],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3","1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-6][1-9][2-9]",,],["(\\d{3})(\\d)(\\d{4})","$1-$2-$3","131",,],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3","131",,],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","13[2-9]",,],["(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4","30",,],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3","2[2-9]",,],["(\\d)(\\d{3,4})","$1-$2","21[0-46-9]",,],["(\\d{2})(\\d{3,4})","$1-$2","[3-6][1-9]1",,],["(\\d{4})(\\d{4})","$1-$2","1(?:5[46-9]|6[04678])","$FG",]]]',
|
||||
"82": '["KR","00(?:[124-68]|[37]\\d{2})","0","0(8[1-46-8]|85\\d{2})?",,"$NP$FG","\\d{4,10}","[1-7]\\d{3,9}|8\\d{8}",[["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3","1(?:0|1[19]|[69]9|5[458])|[57]0",,],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3","1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-6][1-9][1-9]",,],["(\\d{3})(\\d)(\\d{4})","$1-$2-$3","131",,],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3","131",,],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","13[2-9]",,],["(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4","30",,],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3","2[1-9]",,],["(\\d)(\\d{3,4})","$1-$2","21[0-46-9]",,],["(\\d{2})(\\d{3,4})","$1-$2","[3-6][1-9]1",,],["(\\d{4})(\\d{4})","$1-$2","1(?:5[46-9]|6[04678])","$FG",]]]',
|
||||
"253": '["DJ","00",,,,,"\\d{8}","[27]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
|
||||
"91": '["IN","00","0",,,"$NP$FG","\\d{6,13}","1\\d{7,12}|[2-9]\\d{9,10}",[["(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3","7(?:2[0579]|3[057-9]|4[0-389]|5[024-9]|6[0-35-9]|7[0346-9]|8[0-79])|8(?:0[015689]|1[0-57-9]|2[2356-9]|3[0-57-9]|[45]|6[0245789]|7[1-69]|8[0124-9]|9[02-9])|9",,],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","11|2[02]|33|4[04]|79|80[2-46]",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","1(?:2[0-249]|3[0-25]|4[145]|[569][14]|7[1257]|8[1346]|[68][1-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[126-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)",,],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3","1(?:[2-579]|[68][1-9])|[2-8]",,],["(1600)(\\d{2})(\\d{4})","$1 $2 $3","160","$FG",],["(1800)(\\d{4,5})","$1 $2","180","$FG",],["(18[06]0)(\\d{2,4})(\\d{4})","$1 $2 $3","18[06]","$FG",],["(\\d{4})(\\d{3})(\\d{4})(\\d{2})","$1 $2 $3 $4","18[06]","$FG",]]]',
|
||||
"389": '["MK","00","0",,,"$NP$FG","\\d{8}","[2-578]\\d{7}",[["(2)(\\d{3})(\\d{4})","$1 $2 $3","2",,],["([347]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[347]",,],["([58]\\d{2})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4","[58]",,]]]',
|
||||
|
@ -14,7 +14,6 @@
|
||||
[include:dom/encoding/test/unit/xpcshell.ini]
|
||||
[include:dom/plugins/test/unit/xpcshell.ini]
|
||||
[include:dom/mobilemessage/tests/xpcshell.ini]
|
||||
[include:dom/mms/tests/xpcshell.ini]
|
||||
[include:dom/network/tests/unit/xpcshell.ini]
|
||||
[include:dom/network/tests/unit_ipc/xpcshell.ini]
|
||||
[include:dom/network/tests/unit_stats/xpcshell.ini]
|
||||
|
@ -12,7 +12,6 @@
|
||||
[include:dom/apps/tests/unit/xpcshell.ini]
|
||||
[include:dom/encoding/test/unit/xpcshell.ini]
|
||||
[include:dom/mobilemessage/tests/xpcshell.ini]
|
||||
[include:dom/mms/tests/xpcshell.ini]
|
||||
[include:dom/network/tests/unit/xpcshell.ini]
|
||||
[include:dom/payment/tests/unit/xpcshell.ini]
|
||||
[include:dom/permission/tests/unit/xpcshell.ini]
|
||||
|
@ -4,7 +4,6 @@
|
||||
|
||||
[include:dom/apps/tests/unit/xpcshell.ini]
|
||||
[include:dom/mobilemessage/tests/xpcshell.ini]
|
||||
[include:dom/mms/tests/xpcshell.ini]
|
||||
[include:dom/system/gonk/tests/xpcshell.ini]
|
||||
[include:toolkit/devtools/debugger/tests/unit/xpcshell.ini]
|
||||
[include:toolkit/devtools/sourcemap/tests/unit/xpcshell.ini]
|
||||
|
Loading…
x
Reference in New Issue
Block a user