Bug 1489047 - Change almost all DOMString occurrences in XPIDL files to AString. r=nika
authorNicholas Nethercote <nnethercote@mozilla.com>
Thu, 06 Sep 2018 18:02:43 +1000
changeset 494867 31941d904a7c3df53ed5b4c9ecdc40025d865dfb
parent 494866 aa6baa1cd577a16cf471e36c1eee51d19b74d201
child 494868 079e9287971001d839030ce8e60bb175018da76c
push id9984
push userffxbld-merge
push dateMon, 15 Oct 2018 21:07:35 +0000
treeherdermozilla-beta@183d27ea8570 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnika
bugs1489047
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1489047 - Change almost all DOMString occurrences in XPIDL files to AString. r=nika Because they have almost identical semantics.
accessible/interfaces/nsIAccessible.idl
accessible/interfaces/nsIAccessibleApplication.idl
accessible/interfaces/nsIAccessibleTextChangeEvent.idl
accessible/interfaces/nsIXBLAccessible.idl
docshell/base/nsIDocShell.idl
dom/base/nsIDOMRequestService.idl
dom/base/nsIDroppedLinkHandler.idl
dom/browser-element/nsIBrowserElementAPI.idl
dom/console/nsIConsoleAPIStorage.idl
dom/events/nsIEventListenerService.idl
dom/html/nsIDateTimeInputArea.idl
dom/html/nsIMenuBuilder.idl
dom/interfaces/base/nsIBrowserDOMWindow.idl
dom/interfaces/base/nsIServiceWorkerManager.idl
dom/interfaces/base/nsITextInputProcessor.idl
dom/interfaces/notification/nsINotificationStorage.idl
dom/interfaces/push/nsIPushErrorReporter.idl
dom/interfaces/push/nsIPushNotifier.idl
dom/interfaces/push/nsIPushService.idl
dom/interfaces/sidebar/nsIWebContentHandlerRegistrar.idl
dom/interfaces/storage/nsIDOMStorageManager.idl
dom/interfaces/xul/nsIDOMXULButtonElement.idl
dom/interfaces/xul/nsIDOMXULCommandDispatcher.idl
dom/interfaces/xul/nsIDOMXULMenuListElement.idl
dom/interfaces/xul/nsIDOMXULMultSelectCntrlEl.idl
dom/interfaces/xul/nsIDOMXULSelectCntrlEl.idl
dom/interfaces/xul/nsIDOMXULSelectCntrlItemEl.idl
dom/media/gmp/mozIGeckoMediaPluginChromeService.idl
dom/media/nsIAudioDeviceInfo.idl
dom/media/nsIDOMNavigatorUserMedia.idl
dom/media/webspeech/synth/nsISpeechService.idl
dom/media/webspeech/synth/nsISynthVoiceRegistry.idl
dom/network/interfaces/nsITCPSocketCallback.idl
dom/power/nsIDOMWakeLockListener.idl
dom/power/nsIPowerManagerService.idl
dom/presentation/interfaces/nsIPresentationControlChannel.idl
dom/presentation/interfaces/nsIPresentationControlService.idl
dom/presentation/interfaces/nsIPresentationDevice.idl
dom/presentation/interfaces/nsIPresentationDevicePrompt.idl
dom/presentation/interfaces/nsIPresentationDeviceProvider.idl
dom/presentation/interfaces/nsIPresentationListener.idl
dom/presentation/interfaces/nsIPresentationRequestUIGlue.idl
dom/presentation/interfaces/nsIPresentationService.idl
dom/presentation/interfaces/nsIPresentationSessionRequest.idl
dom/presentation/interfaces/nsIPresentationSessionTransport.idl
dom/presentation/interfaces/nsIPresentationSessionTransportBuilder.idl
dom/presentation/interfaces/nsIPresentationTerminateRequest.idl
dom/workers/nsIWorkerDebugger.idl
dom/xslt/txIEXSLTRegExFunctions.idl
editor/nsIEditActionListener.idl
editor/nsIEditor.idl
editor/nsIPlaintextEditor.idl
editor/nsIURIRefObject.idl
intl/l10n/mozIDOMLocalization.idl
netwerk/base/nsIPermissionManager.idl
netwerk/cookie/nsICookieManager.idl
services/fxaccounts/interfaces/nsIFxAccountsUIGlue.idl
widget/nsIBaseWindow.idl
widget/nsIGfxInfo.idl
widget/nsIGfxInfoDebug.idl
widget/nsITaskbarPreview.idl
widget/nsITaskbarPreviewButton.idl
widget/nsITaskbarTabPreview.idl
xpcom/system/nsIXULRuntime.idl
--- a/accessible/interfaces/nsIAccessible.idl
+++ b/accessible/interfaces/nsIAccessible.idl
@@ -77,32 +77,32 @@ interface nsIAccessible : nsISupports
   /**
    * The DOM node this nsIAccessible is associated with.
    */
   readonly attribute Node DOMNode;
 
   /**
     * For remote accessibles the id of the related DOM node.
     */
-  readonly attribute DOMString id;
+  readonly attribute AString id;
 
   /**
    * The document accessible that this access node resides in.
    */
   readonly attribute nsIAccessibleDocument document;
 
   /**
    * The root document accessible that this access node resides in.
    */
   readonly attribute nsIAccessibleDocument rootDocument;
 
   /**
    * The language for the current DOM node, e.g. en, de, etc.
    */
-  readonly attribute DOMString language;
+  readonly attribute AString language;
 
   /**
    * Accessible name -- the main text equivalent for this node. The name is
    * specified by ARIA or by native markup. Example of ARIA markup is
    * aria-labelledby attribute placed on element of this accessible. Example
    * of native markup is HTML label linked with HTML element of this accessible.
    *
    * Value can be string or null. A null value indicates that AT may attempt to
--- a/accessible/interfaces/nsIAccessibleApplication.idl
+++ b/accessible/interfaces/nsIAccessibleApplication.idl
@@ -10,25 +10,25 @@
  * provides information about application.
  */
 [scriptable, builtinclass, uuid(79251626-387c-4531-89f3-680d31d6cf05)]
 interface nsIAccessibleApplication : nsISupports
 {
   /**
    * Returns the application name.
    */
-  readonly attribute DOMString appName;
+  readonly attribute AString appName;
 
   /**
    * Returns the application version.
    */
-  readonly attribute DOMString appVersion;
+  readonly attribute AString appVersion;
 
   /**
    * Returns the platform name.
    */
-  readonly attribute DOMString platformName;
+  readonly attribute AString platformName;
 
   /**
    * Returns the platform version.
    */
-  readonly attribute DOMString platformVersion;
+  readonly attribute AString platformVersion;
 };
--- a/accessible/interfaces/nsIAccessibleTextChangeEvent.idl
+++ b/accessible/interfaces/nsIAccessibleTextChangeEvent.idl
@@ -24,10 +24,10 @@ interface nsIAccessibleTextChangeEvent :
   /**
    * Returns true if text was inserted, otherwise false.
    */
   readonly attribute boolean isInserted;
 
   /**
    * The inserted or removed text
    */
-  readonly attribute DOMString modifiedText;
+  readonly attribute AString modifiedText;
 };
--- a/accessible/interfaces/nsIXBLAccessible.idl
+++ b/accessible/interfaces/nsIXBLAccessible.idl
@@ -11,10 +11,10 @@
  * accessible properties.
  */
 [scriptable, builtinclass, uuid(3716eb86-166b-445b-a94a-9b522fee96e6)]
 interface nsIXBLAccessible : nsISupports
 {
   /**
    * Return accessible name.
    */
-  readonly attribute DOMString accessibleName;
+  readonly attribute AString accessibleName;
 };
--- a/docshell/base/nsIDocShell.idl
+++ b/docshell/base/nsIDocShell.idl
@@ -211,18 +211,18 @@ interface nsIDocShell : nsIDocShellTreeI
                               out nsIDocShell aDocShell,
                               out nsIRequest aRequest);
 
   /**
    * Do either a history.pushState() or history.replaceState() operation,
    * depending on the value of aReplace.
    */
   [implicit_jscontext]
-  void addState(in jsval aData, in DOMString aTitle,
-                in DOMString aURL, in boolean aReplace);
+  void addState(in jsval aData, in AString aTitle,
+                in AString aURL, in boolean aReplace);
 
   /**
    * Reset state to a new content model within the current document and the document
    * viewer.  Called by the document before initiating an out of band document.write().
    */
   void prepareForNewContentModel();
 
   /**
@@ -269,17 +269,17 @@ interface nsIDocShell : nsIDocShellTreeI
    * This attribute allows chrome to tie in to handle DOM events that may
    * be of interest to chrome.
    */
   attribute EventTarget chromeEventHandler;
 
   /**
    * This allows chrome to set a custom User agent on a specific docshell
    */
-  attribute DOMString customUserAgent;
+  attribute AString customUserAgent;
 
   /**
    * Whether CSS error reporting is enabled.
    */
   attribute boolean cssErrorReportingEnabled;
 
   /**
    * Whether to allow plugin execution
--- a/dom/base/nsIDOMRequestService.idl
+++ b/dom/base/nsIDOMRequestService.idl
@@ -10,12 +10,12 @@ interface mozIDOMWindow;
 webidl DOMRequest;
 
 [scriptable, builtinclass, uuid(9a57e5de-ce93-45fa-8145-755722834f7c)]
 interface nsIDOMRequestService : nsISupports
 {
   DOMRequest createRequest(in mozIDOMWindow window);
 
   void fireSuccess(in DOMRequest request, in jsval result);
-  void fireError(in DOMRequest request, in DOMString error);
+  void fireError(in DOMRequest request, in AString error);
   void fireSuccessAsync(in DOMRequest request, in jsval result);
-  void fireErrorAsync(in DOMRequest request, in DOMString error);
+  void fireErrorAsync(in DOMRequest request, in AString error);
 };
--- a/dom/base/nsIDroppedLinkHandler.idl
+++ b/dom/base/nsIDroppedLinkHandler.idl
@@ -9,27 +9,27 @@ webidl DragEvent;
 webidl DataTransfer;
 
 [scriptable, uuid(69E14F91-2E09-4CA6-A511-A715C99A2804)]
 interface nsIDroppedLinkItem : nsISupports
 {
   /**
    * Returns the URL of the link.
    */
-  readonly attribute DOMString url;
+  readonly attribute AString url;
 
   /**
    * Returns the link name.
    */
-  readonly attribute DOMString name;
+  readonly attribute AString name;
 
   /**
    * Returns the MIME-Type.
    */
-  readonly attribute DOMString type;
+  readonly attribute AString type;
 };
 
 [scriptable, uuid(21B5C25A-28A9-47BD-8431-FA9116305DED)]
 interface nsIDroppedLinkHandler : nsISupports
 {
   /**
    * Determines if a link being dragged can be dropped and returns true if so.
    * aEvent should be a dragenter or dragover event.
--- a/dom/browser-element/nsIBrowserElementAPI.idl
+++ b/dom/browser-element/nsIBrowserElementAPI.idl
@@ -31,54 +31,54 @@ interface nsIBrowserElementAPI : nsISupp
 
   /**
    * Notify frame scripts that support the API to destroy.
    */
   void destroyFrameScripts();
 
   void setFrameLoader(in FrameLoader frameLoader);
 
-  void sendMouseEvent(in DOMString type,
+  void sendMouseEvent(in AString type,
                       in uint32_t x,
                       in uint32_t y,
                       in uint32_t button,
                       in uint32_t clickCount,
                       in uint32_t mifiers);
-  void sendTouchEvent(in DOMString aType,
+  void sendTouchEvent(in AString aType,
                       [const, array, size_is(count)] in uint32_t aIdentifiers,
                       [const, array, size_is(count)] in int32_t aXs,
                       [const, array, size_is(count)] in int32_t aYs,
                       [const, array, size_is(count)] in uint32_t aRxs,
                       [const, array, size_is(count)] in uint32_t aRys,
                       [const, array, size_is(count)] in float aRotationAngles,
                       [const, array, size_is(count)] in float aForces,
                       in uint32_t count,
                       in long aModifiers);
   void goBack();
   void goForward();
   void reload(in boolean hardReload);
   void stop();
-  DOMRequest download(in DOMString url,
+  DOMRequest download(in AString url,
                             [optional] in jsval options);
   DOMRequest purgeHistory();
   DOMRequest getScreenshot(in uint32_t width,
                                  in uint32_t height,
-                                 [optional] in DOMString mimeType);
+                                 [optional] in AString mimeType);
   void zoom(in float zoom);
   DOMRequest getCanGoBack();
   DOMRequest getCanGoForward();
   DOMRequest getContentDimensions();
 
-  void findAll(in DOMString searchString, in long caseSensitivity);
+  void findAll(in AString searchString, in long caseSensitivity);
   void findNext(in long direction);
   void clearMatch();
 
   void addNextPaintListener(in jsval listener); // BrowserElementNextPaintEventCallback
   void removeNextPaintListener(in jsval listener); // BrowserElementNextPaintEventCallback
 
-  DOMRequest executeScript(in DOMString script, in jsval options);
+  DOMRequest executeScript(in AString script, in jsval options);
 
   /**
    * Returns an object that represents a Web Manifest:
    * http://w3c.github.io/manifest/
    */
   DOMRequest getWebManifest();
 };
--- a/dom/console/nsIConsoleAPIStorage.idl
+++ b/dom/console/nsIConsoleAPIStorage.idl
@@ -14,34 +14,34 @@ interface nsIConsoleAPIStorage : nsISupp
    * @param string [aId]
    *        Optional, the inner window ID for which you want to get the array of
    *        cached events.
    * @returns array
    *          The array of cached events for the given window. If no |aId| is
    *          given this function returns all of the cached events, from any
    *          window.
    */
-  jsval getEvents([optional] in DOMString aId);
+  jsval getEvents([optional] in AString aId);
 
   /**
    * Record an event associated with the given window ID.
    *
    * @param string aId
    *        The ID of the inner window for which the event occurred or "jsm" for
    *        messages logged from JavaScript modules..
    * @param string aOuterId
    *        This ID is used as 3rd parameters for the console-api-log-event
    *        notification.
    * @param object aEvent
    *        A JavaScript object you want to store.
    */
-  void recordEvent(in DOMString aId, in DOMString aOuterId, in jsval aEvent);
+  void recordEvent(in AString aId, in AString aOuterId, in jsval aEvent);
 
   /**
    * Clear storage data for the given window.
    *
    * @param string [aId]
    *        Optional, the inner window ID for which you want to clear the
    *        messages. If this is not specified all of the cached messages are
    *        cleared, from all window objects.
    */
-  void clearEvents([optional] in DOMString aId);
+  void clearEvents([optional] in AString aId);
 };
--- a/dom/events/nsIEventListenerService.idl
+++ b/dom/events/nsIEventListenerService.idl
@@ -84,33 +84,33 @@ interface nsIEventListenerService : nsIS
                               [optional] out unsigned long aCount,
                               [retval, array, size_is(aCount)] out
                                 EventTarget aOutArray);
 
   /**
    * Returns true if a event target has any listener for the given type.
    */
   boolean hasListenersFor(in EventTarget aEventTarget,
-                          in DOMString aType);
+                          in AString aType);
 
   /**
    * Add a system-group eventlistener to a event target.
    */
   [implicit_jscontext]
   void addSystemEventListener(in EventTarget target,
-                              in DOMString type,
+                              in AString type,
                               in jsval listener,
                               in boolean useCapture);
 
   /**
    * Remove a system-group eventlistener from a event target.
    */
   [implicit_jscontext]
   void removeSystemEventListener(in EventTarget target,
-                                 in DOMString type,
+                                 in AString type,
                                  in jsval listener,
                                  in boolean useCapture);
 
   [implicit_jscontext]
   void addListenerForAllEvents(in EventTarget target,
                                in jsval listener,
                                [optional] in boolean aUseCapture,
                                [optional] in boolean aWantsUntrusted,
--- a/dom/html/nsIDateTimeInputArea.idl
+++ b/dom/html/nsIDateTimeInputArea.idl
@@ -44,16 +44,16 @@ interface nsIDateTimeInputArea : nsISupp
    * Set the current state of the picker, true if it's opened, false otherwise.
    */
   void setPickerState(in boolean isOpen);
 
   /**
    * Set the attribute of the inner text boxes. Only "tabindex", "readonly",
    * and "disabled" are allowed.
    */
-  void setEditAttribute(in DOMString name, in DOMString value);
+  void setEditAttribute(in AString name, in AString value);
 
   /**
    * Remove the attribute of the inner text boxes. Only "tabindex", "readonly",
    * and "disabled" are allowed.
    */
-  void removeEditAttribute(in DOMString name);
+  void removeEditAttribute(in AString name);
 };
--- a/dom/html/nsIMenuBuilder.idl
+++ b/dom/html/nsIMenuBuilder.idl
@@ -15,17 +15,17 @@ webidl Element;
 interface nsIMenuBuilder : nsISupports
 {
 
   /**
    * Create the top level menu or a submenu. The implementation should create
    * a new context for this menu, so all subsequent methods will add new items
    * to this newly created menu.
    */
-  void openContainer(in DOMString aLabel);
+  void openContainer(in AString aLabel);
 
   /**
    * Add a new menu item. All menu item details can be obtained from
    * the element. This method is not called for hidden elements or elements
    * with no or empty label. The icon should be loaded only if aCanLoadIcon
    * is true.
    */
   void addItemFor(in Element aElement,
@@ -67,10 +67,10 @@ interface nsIMenuBuilder : nsISupports
    */
   AString toJSONString();
 
   /**
    * Invoke the action of the menuitem with assigned id aGeneratedItemId.
    *
    * @param aGeneratedItemId the menuitem id
    */
-  void click(in DOMString aGeneratedItemId);
+  void click(in AString aGeneratedItemId);
 };
--- a/dom/interfaces/base/nsIBrowserDOMWindow.idl
+++ b/dom/interfaces/base/nsIBrowserDOMWindow.idl
@@ -9,17 +9,17 @@ interface mozIDOMWindowProxy;
 interface nsIDOMWindow;
 interface nsIURI;
 interface nsIFrameLoaderOwner;
 interface nsIPrincipal;
 
 [scriptable, uuid(e774db14-79ac-4156-a7a3-aa3fd0a22c10)]
 interface nsIOpenURIInFrameParams : nsISupports
 {
-  attribute DOMString referrer;
+  attribute AString referrer;
   attribute unsigned long referrerPolicy;
   readonly attribute boolean isPrivate;
   attribute nsIPrincipal triggeringPrincipal;
 
   // The browser or frame element in the parent process which holds the
   // opener window in the content process. May be null.
   readonly attribute nsIFrameLoaderOwner openerBrowser;
 
--- a/dom/interfaces/base/nsIServiceWorkerManager.idl
+++ b/dom/interfaces/base/nsIServiceWorkerManager.idl
@@ -45,18 +45,18 @@ interface nsIServiceWorkerInfo : nsISupp
   const unsigned short STATE_PARSED = 0;
   const unsigned short STATE_INSTALLING = 1;
   const unsigned short STATE_INSTALLED = 2;
   const unsigned short STATE_ACTIVATING = 3;
   const unsigned short STATE_ACTIVATED = 4;
   const unsigned short STATE_REDUNDANT = 5;
   const unsigned short STATE_UNKNOWN = 6;
 
-  readonly attribute DOMString scriptSpec;
-  readonly attribute DOMString cacheName;
+  readonly attribute AString scriptSpec;
+  readonly attribute AString cacheName;
 
   readonly attribute unsigned short state;
 
   readonly attribute nsIWorkerDebugger debugger;
 
   readonly attribute bool handlesFetchEvents;
 
   readonly attribute PRTime installedTime;
@@ -79,18 +79,18 @@ interface nsIServiceWorkerRegistrationIn
 {
   // State values below should match the ServiceWorkerUpdateViaCache enumeration.
   const unsigned short UPDATE_VIA_CACHE_IMPORTS = 0;
   const unsigned short UPDATE_VIA_CACHE_ALL = 1;
   const unsigned short UPDATE_VIA_CACHE_NONE = 2;
 
   readonly attribute nsIPrincipal principal;
 
-  readonly attribute DOMString scope;
-  readonly attribute DOMString scriptSpec;
+  readonly attribute AString scope;
+  readonly attribute AString scriptSpec;
   readonly attribute unsigned short updateViaCache;
 
   readonly attribute PRTime lastUpdateTime;
 
   readonly attribute nsIServiceWorkerInfo installingWorker;
   readonly attribute nsIServiceWorkerInfo waitingWorker;
   readonly attribute nsIServiceWorkerInfo activeWorker;
 
@@ -118,39 +118,39 @@ interface nsIServiceWorkerManagerListene
 interface nsIServiceWorkerManager : nsISupports
 {
   /**
    * Unregister an existing ServiceWorker registration for `aScope`.
    * It keeps aCallback alive until the operation is concluded.
    */
   void unregister(in nsIPrincipal aPrincipal,
                   in nsIServiceWorkerUnregisterCallback aCallback,
-                  in DOMString aScope);
+                  in AString aScope);
 
   nsIServiceWorkerRegistrationInfo getRegistrationByPrincipal(in nsIPrincipal aPrincipal,
-                                                              in DOMString aScope);
+                                                              in AString aScope);
 
   [notxpcom, nostdcall] bool StartControlling(in const_ClientInfoRef aClientInfo,
                                               in const_ServiceWorkerDescriptorRef aServiceWorker);
 
   // Testing
-  DOMString getScopeForUrl(in nsIPrincipal aPrincipal, in DOMString aPath);
+  AString getScopeForUrl(in nsIPrincipal aPrincipal, in AString aPath);
 
   // It returns an array of nsIServiceWorkerRegistrationInfos.
   nsIArray getAllRegistrations();
 
   // It calls softUpdate() for each child process.
   [implicit_jscontext] void propagateSoftUpdate(in jsval aOriginAttributes,
-                                                in DOMString aScope);
+                                                in AString aScope);
 
   // It calls unregister() in each child process. The callback is used to
   // inform when unregister() is completed on the current process.
   void propagateUnregister(in nsIPrincipal aPrincipal,
                            in nsIServiceWorkerUnregisterCallback aCallback,
-                           in DOMString aScope);
+                           in AString aScope);
 
   void sendNotificationClickEvent(in ACString aOriginSuffix,
                                   in ACString scope,
                                   in AString aID,
                                   in AString aTitle,
                                   in AString aDir,
                                   in AString aLang,
                                   in AString aBody,
--- a/dom/interfaces/base/nsITextInputProcessor.idl
+++ b/dom/interfaces/base/nsITextInputProcessor.idl
@@ -322,17 +322,17 @@ interface nsITextInputProcessor : nsISup
   /**
    * Set new composition string.  Pending composition will be flushed by
    * a call of flushPendingComposition().  However, if the new composition
    * string isn't empty, you need to call appendClauseToPendingComposition() to
    * fill all characters of aString with one or more clauses before flushing.
    * Note that if you need to commit or cancel composition, use
    * commitComposition(), commitCompositionWith() or cancelComposition().
    */
-  void setPendingCompositionString(in DOMString aString);
+  void setPendingCompositionString(in AString aString);
 
   // ATTR_RAW_CLAUSE means that the clause hasn't been selected nor converted
   // yet.
   const unsigned long ATTR_RAW_CLAUSE           = 0x02;
   // ATTR_SELECTED_RAW_CLAUSE means that the clause hasn't been converted yet
   // but is selected for converting to the other string.
   const unsigned long ATTR_SELECTED_RAW_CLAUSE  = 0x03;
   // ATTR_CONVERTED_CLAUSE means that the clause has already been converted but
@@ -449,17 +449,17 @@ interface nsITextInputProcessor : nsISup
    * @param aKeyFlags       See KEY_* constants.
    * @return                Returns true if there is a composition already or
    *                        starting composition automatically.
    *                        Otherwise, i.e., if it cannot start composition
    *                        automatically, e.g., canceled by web apps, returns
    *                        false.
    */
   [optional_argc]
-    boolean commitCompositionWith(in DOMString aCommitString,
+    boolean commitCompositionWith(in AString aCommitString,
                                   [optional] in Event aKeyboardEvent,
                                   [optional] in unsigned long aKeyFlags);
 
   /**
    * cancelComposition() will cancel composition.  This is for now the same as
    * calling commitComposition("").  However, in the future, this might work
    * better.  If your IME needs to cancel composition, use this instead of
    * commitComposition().
@@ -587,17 +587,17 @@ interface nsITextInputProcessor : nsISup
   /**
    * getModifierState() returns modifier state managed by this instance.
    *
    * @param aModifier       One of modifier key names.  This doesn't support
    *                        virtual modifiers like "Accel".
    * @return                true if the modifier key is active.  Otherwise,
    *                        false.
    */
-  boolean getModifierState(in DOMString aModifierKey);
+  boolean getModifierState(in AString aModifierKey);
 
   /**
    * shareModifierStateOf() makes the instance shares modifier state of
    * another instance.  When this is called, the instance refers the modifier
    * state of another instance.  After that, changes to either this and the
    * other instance's modifier state is synchronized.
    *
    * @param aOther          Another instance which will be referred by the
--- a/dom/interfaces/notification/nsINotificationStorage.idl
+++ b/dom/interfaces/notification/nsINotificationStorage.idl
@@ -14,26 +14,26 @@ interface nsINotificationStorageCallback
    * @param id: a uuid for this notification
    * @param title: the notification title
    * @param dir: the notification direction,
    *             possible values are "ltr", "rtl", "auto"
    * @param lang: the notification language
    * @param body: the notification body
    * @param tag: the notification tag
    */
-  void handle(in DOMString id,
-              in DOMString title,
-              in DOMString dir,
-              in DOMString lang,
-              in DOMString body,
-              in DOMString tag,
-              in DOMString icon,
-              in DOMString data,
-              in DOMString behavior,
-              in DOMString serviceWorkerRegistrationScope);
+  void handle(in AString id,
+              in AString title,
+              in AString dir,
+              in AString lang,
+              in AString body,
+              in AString tag,
+              in AString icon,
+              in AString data,
+              in AString behavior,
+              in AString serviceWorkerRegistrationScope);
 
   /**
    * Callback function used to notify C++ the we have returned
    * all notification objects for this Notification.get call.
    */
   void done();
 };
 
@@ -60,74 +60,74 @@ interface nsINotificationStorage : nsISu
    *                   Stored in the database to avoid re-computing
    *                   it. Built from origin and tag or id depending
    *                   whether there is a tag defined.
    * @param registrationID: Opaque string that identifies the service worker
    *                        registration this Notification is associated with.
    *                        May be empty. Only set for Notifications created by
    *                        showNotification().
    */
-  void put(in DOMString origin,
-           in DOMString id,
-           in DOMString title,
-           in DOMString dir,
-           in DOMString lang,
-           in DOMString body,
-           in DOMString tag,
-           in DOMString icon,
-           in DOMString alertName,
-           in DOMString data,
-           in DOMString behavior,
-           in DOMString serviceWorkerRegistrationScope);
+  void put(in AString origin,
+           in AString id,
+           in AString title,
+           in AString dir,
+           in AString lang,
+           in AString body,
+           in AString tag,
+           in AString icon,
+           in AString alertName,
+           in AString data,
+           in AString behavior,
+           in AString serviceWorkerRegistrationScope);
 
   /**
    * Retrieve a list of notifications.
    *
    * @param origin: the origin/app for which to fetch notifications from
    * @param tag: used to fetch only a specific tag
    * @param callback: nsINotificationStorageCallback, used for
    *                  returning notifications objects
    */
-  void get(in DOMString origin,
-           in DOMString tag,
+  void get(in AString origin,
+           in AString tag,
            in nsINotificationStorageCallback aCallback);
 
   /**
    * Retrieve a notification by ID.
    *
    * @param origin: the origin/app for which to fetch notifications.
    * @param id: the id of the notification.
    * @param callback: nsINotificationStorageCallback whose Handle method will
    * be called *at most once* if the notification with that ID is found. Not
    * called if that ID is not found. Done() will be called right after
    * Handle().
    */
-  void getByID(in DOMString origin,
-               in DOMString id,
+  void getByID(in AString origin,
+               in AString id,
                in nsINotificationStorageCallback aCallback);
 
   /**
    * Remove a notification from storage.
    *
    * @param origin: the origin/app to delete the notification from
    * @param id: the uuid for the notification to delete
    */
-  void delete(in DOMString origin,
-              in DOMString id);
+  void delete(in AString origin,
+              in AString id);
 
   /**
    * Notifications are not supposed to be persistent, according to spec, at
    * least for now. But we want to be able to have this behavior on B2G. Thus,
    * this method will check if the origin sending the notifications is a valid
    * registered app with a manifest or not. Hence, a webpage that has none
    * will have its notification sent and available (via Notification.get())
    * during the life time of the page.
    *
    * @param origin: Origin from which the notification is sent.
    *
    * @return boolean
    */
-  boolean canPut(in DOMString origin);
+  boolean canPut(in AString origin);
 };
 
 %{C++
 #define NS_NOTIFICATION_STORAGE_CONTRACTID "@mozilla.org/notificationStorage;1"
 %}
--- a/dom/interfaces/push/nsIPushErrorReporter.idl
+++ b/dom/interfaces/push/nsIPushErrorReporter.idl
@@ -35,11 +35,11 @@ interface nsIPushErrorReporter : nsISupp
   const uint16_t DELIVERY_UNHANDLED_REJECTION = 7;
   const uint16_t DELIVERY_INTERNAL_ERROR = 8;
 
   /**
    * Reports a `push` event handler error to the Push service. |messageId| is
    * an opaque string passed to `nsIPushNotifier.notifyPush{WithData}`.
    * |reason| is a delivery error reason.
    */
-  void reportDeliveryError(in DOMString messageId,
+  void reportDeliveryError(in AString messageId,
                            [optional] in uint16_t reason);
 };
--- a/dom/interfaces/push/nsIPushNotifier.idl
+++ b/dom/interfaces/push/nsIPushNotifier.idl
@@ -25,25 +25,25 @@ interface nsIPrincipal;
 interface nsIPushNotifier : nsISupports
 {
   /**
    * Fires a `push-message` observer notification, and sends a `push` event to
    * the service worker registered for the |scope|. |messageId| is an opaque ID
    * used to report errors if the worker fails to handle the message.
    */
   void notifyPush(in ACString scope, in nsIPrincipal principal,
-                  in DOMString messageId);
+                  in AString messageId);
 
   /**
    * Same as `notifyPush`, except the subject of the observer notification
    * receives an `nsIPushMessage` instance containing the |data|. Service
    * workers can access the |data| via the `PushMessageData` WebIDL interface.
    */
   void notifyPushWithData(in ACString scope, in nsIPrincipal principal,
-                          in DOMString messageId,
+                          in AString messageId,
                           [optional] in uint32_t dataLen,
                           [array, size_is(dataLen)] in uint8_t data);
 
   /**
    * Fires a `push-subscription-change` observer notification, and sends a
    * `pushsubscriptionchange` event to the service worker registered for the
    * |scope|.
    */
@@ -56,28 +56,28 @@ interface nsIPushNotifier : nsISupports
    *
    * This is useful for Dev Tools and debugging add-ons that passively observe
    * when subscriptions are created or dropped. Other callers should listen for
    * `push-subscription-change` and resubscribe instead.
    */
   void notifySubscriptionModified(in ACString scope, in nsIPrincipal principal);
 
   void notifyError(in ACString scope, in nsIPrincipal principal,
-                   in DOMString message, in uint32_t flags);
+                   in AString message, in uint32_t flags);
 };
 
 /**
  * Provides methods for retrieving push message data in different formats.
  * This interface resembles the `PushMessageData` WebIDL interface.
  */
 [scriptable, builtinclass, uuid(dfc4f151-cead-40df-8eb7-7a7a67c54b16)]
 interface nsIPushData : nsISupports
 {
   /** Extracts the data as a UTF-8 text string. */
-  DOMString text();
+  AString text();
 
   /** Extracts the data as a JSON value. */
   [implicit_jscontext] jsval json();
 
   /** Extracts the raw binary data. */
   void binary([optional] out uint32_t dataLen,
               [array, retval, size_is(dataLen)] out uint8_t data);
 };
--- a/dom/interfaces/push/nsIPushService.idl
+++ b/dom/interfaces/push/nsIPushService.idl
@@ -9,27 +9,27 @@ interface nsIPrincipal;
 
 /**
  * A push subscription, passed as an argument to a subscription callback.
  * Similar to the `PushSubscription` WebIDL interface.
  */
 [scriptable, uuid(1de32d5c-ea88-4c9e-9626-b032bd87f415)]
 interface nsIPushSubscription : nsISupports
 {
-  readonly attribute DOMString endpoint;
+  readonly attribute AString endpoint;
   readonly attribute long long pushCount;
   readonly attribute long long lastPush;
   readonly attribute long quota;
   readonly attribute bool isSystemSubscription;
   readonly attribute jsval p256dhPrivateKey;
 
   bool quotaApplies();
   bool isExpired();
 
-  void getKey(in DOMString name,
+  void getKey(in AString name,
               [optional] out uint32_t keyLen,
               [array, size_is(keyLen), retval] out uint8_t key);
 };
 
 /**
  * Called by methods that return a push subscription. A non-success
  * |status| indicates that there was a problem returning the
  * subscription, and the |subscription| argument should be ignored. Otherwise,
@@ -71,19 +71,19 @@ interface nsIPushClearResultCallback : n
  * which uses service workers. This interface exists to support the DOM API,
  * and allows privileged code to receive messages without migrating to service
  * workers.
  */
 [scriptable, uuid(678ef584-bf25-47aa-ac84-03efc0865b68)]
 interface nsIPushService : nsISupports
 {
   /** Observer topic names, exported for convenience. */
-  readonly attribute DOMString pushTopic;
-  readonly attribute DOMString subscriptionChangeTopic;
-  readonly attribute DOMString subscriptionModifiedTopic;
+  readonly attribute AString pushTopic;
+  readonly attribute AString subscriptionChangeTopic;
+  readonly attribute AString subscriptionModifiedTopic;
 
   /**
    * Creates a push subscription for the given |scope| URL and |principal|.
    * If a subscription already exists for this |(scope, principal)| pair,
    * the callback will receive the existing record as the second argument.
    *
    * The |endpoint| property of the subscription record is a URL string
    * that can be used to send push messages to subscribers.
@@ -91,48 +91,48 @@ interface nsIPushService : nsISupports
    * Each incoming message fires a `push-message` observer notification, with
    * an `nsIPushMessage` as the subject and the |scope| as the data.
    *
    * If the server drops a subscription, a `push-subscription-change` observer
    * will be fired, with the subject set to |principal| and the data set to
    * |scope|. Servers may drop subscriptions at any time, so callers should
    * recreate subscriptions if desired.
    */
-  void subscribe(in DOMString scope, in nsIPrincipal principal,
+  void subscribe(in AString scope, in nsIPrincipal principal,
                  in nsIPushSubscriptionCallback callback);
 
   /**
    * Creates a restricted push subscription with the given public |key|. The
    * application server must use the corresponding private key to authenticate
    * message delivery requests, as described in draft-thomson-webpush-vapid.
    */
-  void subscribeWithKey(in DOMString scope, in nsIPrincipal principal,
+  void subscribeWithKey(in AString scope, in nsIPrincipal principal,
                         in uint32_t keyLength,
                         [const, array, size_is(keyLength)] in uint8_t key,
                         in nsIPushSubscriptionCallback callback);
 
   /**
    * Removes a push subscription for the given |scope|.
    */
-  void unsubscribe(in DOMString scope, in nsIPrincipal principal,
+  void unsubscribe(in AString scope, in nsIPrincipal principal,
                    in nsIUnsubscribeResultCallback callback);
 
   /**
    * Retrieves the subscription record associated with the given
    * |(scope, principal)| pair. If the subscription does not exist, the
    * callback will receive |null| as the second argument.
    */
-  void getSubscription(in DOMString scope, in nsIPrincipal principal,
+  void getSubscription(in AString scope, in nsIPrincipal principal,
                        in nsIPushSubscriptionCallback callback);
 
   /**
    * Drops every subscription for the given |domain|, or all domains if
    * |domain| is "*".
    */
-  void clearForDomain(in DOMString domain,
+  void clearForDomain(in AString domain,
                       in nsIPushClearResultCallback callback);
 };
 
 [scriptable, uuid(a2555e70-46f8-4b52-bf02-d978b979d143)]
 interface nsIPushQuotaManager : nsISupports
 {
   /**
    * Informs the quota manager that a notification
--- a/dom/interfaces/sidebar/nsIWebContentHandlerRegistrar.idl
+++ b/dom/interfaces/sidebar/nsIWebContentHandlerRegistrar.idl
@@ -20,19 +20,19 @@
 [scriptable, uuid(65a3fafd-0e4a-4b06-8b4e-6a611da63d98)]
 interface nsIWebContentHandlerRegistrar : nsISupports
 {
   /**
    * See documentation in Navigator.webidl
    * The additional contentWindow param for this method represents the dom
    * content window from which the method has been called.
    */
-   void registerProtocolHandler(in DOMString protocol,
-                                in DOMString uri,
-                                in DOMString title,
+   void registerProtocolHandler(in AString protocol,
+                                in AString uri,
+                                in AString title,
                                 in nsISupports windowOrBrowser);
   /**
    * Removes a registered protocol handler
    *
    * While registerProtocolHandler is exposed on Navigator, unregistering
    * is exposed through the UI code.
    * @param   protocol
    *          The protocol scheme to remove a service handler for
--- a/dom/interfaces/storage/nsIDOMStorageManager.idl
+++ b/dom/interfaces/storage/nsIDOMStorageManager.idl
@@ -41,17 +41,17 @@ interface nsIDOMStorageManager : nsISupp
    *    Principal to bound storage to.
    * @param aDocumentURI
    *    URL of the demanding document, used for DOM storage event only.
    * @param aPrivate
    *    Whether the demanding document is running in Private Browsing mode or not.
    */
   Storage createStorage(in mozIDOMWindow aWindow,
                         in nsIPrincipal aPrincipal,
-                        in DOMString aDocumentURI,
+                        in AString aDocumentURI,
                         [optional] in bool aPrivate);
   /**
    * Returns instance of DOM storage object for given principal.
    * If there is no storage managed for the scope, then null is returned and
    * no object is created.  Otherwise, an object (new) for the existing storage
    * scope is returned.
    *
    * @param aWindow
--- a/dom/interfaces/xul/nsIDOMXULButtonElement.idl
+++ b/dom/interfaces/xul/nsIDOMXULButtonElement.idl
@@ -2,20 +2,20 @@
 /* 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 "nsIDOMXULControlElement.idl"
 
 [scriptable, uuid(6ed53cfb-9e59-424c-af8d-e74582381951)]
 interface nsIDOMXULButtonElement : nsIDOMXULControlElement {
-  attribute DOMString type;
-  attribute DOMString dlgType;
+  attribute AString type;
+  attribute AString dlgType;
 
   // For buttons of type="menu" only.
   attribute boolean open;
   
   // For buttons of type="checkbox" only.
   attribute boolean checked;
 
   // For buttons of type="radio" only.
-  attribute DOMString group;
+  attribute AString group;
 };
--- a/dom/interfaces/xul/nsIDOMXULCommandDispatcher.idl
+++ b/dom/interfaces/xul/nsIDOMXULCommandDispatcher.idl
@@ -13,21 +13,21 @@ webidl Element;
 
 [scriptable, uuid(a9fa9fd3-8d62-4f94-9ed8-3ea9c3cf0773)]
 interface nsIDOMXULCommandDispatcher : nsISupports
 {
             attribute Element focusedElement;
             attribute mozIDOMWindowProxy focusedWindow;
 
   void                      addCommandUpdater(in Element updater,
-                                              in DOMString events,
-                                              in DOMString targets);
+                                              in AString events,
+                                              in AString targets);
   void                      removeCommandUpdater(in Element updater);
 
-  void                      updateCommands(in DOMString eventName);
+  void                      updateCommands(in AString eventName);
 
   nsIController             getControllerForCommand(in string command);
   nsIControllers            getControllers();
 
   void advanceFocus();
   void rewindFocus();
   void advanceFocusIntoSubtree(in Element elt);
 
--- a/dom/interfaces/xul/nsIDOMXULMenuListElement.idl
+++ b/dom/interfaces/xul/nsIDOMXULMenuListElement.idl
@@ -8,17 +8,17 @@
 webidl Element;
 
 [scriptable, uuid(36c16a17-c0e9-4b35-951b-81a147314ef1)]
 interface nsIDOMXULMenuListElement : nsIDOMXULSelectControlElement {
   attribute boolean editable;
   attribute boolean open;
   
   // label of selected option or value of textfield for editable menu lists
-  readonly attribute DOMString label;
+  readonly attribute AString label;
 
-  attribute DOMString crop;
-  attribute DOMString image;
+  attribute AString crop;
+  attribute AString image;
   
   // For editable menu lists only.
   readonly attribute Element inputField;
 };
 
--- a/dom/interfaces/xul/nsIDOMXULMultSelectCntrlEl.idl
+++ b/dom/interfaces/xul/nsIDOMXULMultSelectCntrlEl.idl
@@ -5,17 +5,17 @@
 
 #include "nsIDOMXULSelectCntrlEl.idl"
 
 webidl NodeList;
 
 [scriptable, uuid(40654a10-8204-4f06-9f21-7baa31c7b1dd)]
 interface nsIDOMXULMultiSelectControlElement : nsIDOMXULSelectControlElement
 {
-  attribute DOMString selType;
+  attribute AString selType;
 
   attribute nsIDOMXULSelectControlItemElement currentItem;
   attribute long currentIndex;
 
   readonly attribute NodeList selectedItems;
   
   void addItemToSelection(in nsIDOMXULSelectControlItemElement item);
   void removeItemFromSelection(in nsIDOMXULSelectControlItemElement item);
--- a/dom/interfaces/xul/nsIDOMXULSelectCntrlEl.idl
+++ b/dom/interfaces/xul/nsIDOMXULSelectCntrlEl.idl
@@ -6,15 +6,15 @@
 #include "nsIDOMXULControlElement.idl"
 interface nsIDOMXULSelectControlItemElement;
 
 [scriptable, uuid(9bf188a7-d6f9-431b-b5c7-118013998e8b)]
 interface nsIDOMXULSelectControlElement : nsIDOMXULControlElement {
   attribute nsIDOMXULSelectControlItemElement selectedItem;
   attribute long selectedIndex;
 
-  attribute DOMString value;
+  attribute AString value;
 
   readonly attribute unsigned long itemCount;
   long getIndexOfItem(in nsIDOMXULSelectControlItemElement item);
   nsIDOMXULSelectControlItemElement getItemAtIndex(in long index);
 };
 
--- a/dom/interfaces/xul/nsIDOMXULSelectCntrlItemEl.idl
+++ b/dom/interfaces/xul/nsIDOMXULSelectCntrlItemEl.idl
@@ -4,23 +4,23 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsISupports.idl"
 interface nsIDOMXULSelectControlElement;
 
 [scriptable, uuid(5c6be58f-17df-4750-88a5-4a59ac28adc9)]
 interface nsIDOMXULSelectControlItemElement : nsISupports {
   attribute boolean disabled;
-  attribute DOMString crop;
-  attribute DOMString image;
-  attribute DOMString label;
-  attribute DOMString accessKey;
-  attribute DOMString command;
+  attribute AString crop;
+  attribute AString image;
+  attribute AString label;
+  attribute AString accessKey;
+  attribute AString command;
   
-  attribute DOMString value;
+  attribute AString value;
   
   readonly attribute boolean selected;
   
   readonly attribute nsIDOMXULSelectControlElement control;
   
   // XXX defined in XULElement, but should be defined here
   // void doCommand();
 };
--- a/dom/media/gmp/mozIGeckoMediaPluginChromeService.idl
+++ b/dom/media/gmp/mozIGeckoMediaPluginChromeService.idl
@@ -29,17 +29,17 @@ interface mozIGeckoMediaPluginChromeServ
   void removeAndDeletePluginDirectory(in AString directory,
                                       [optional] in bool defer);
 
   /**
    * Clears storage data associated with the site and the originAttributes
    * pattern in JSON format.
    */
   void forgetThisSite(in AString site,
-                      in DOMString aPattern);
+                      in AString aPattern);
 
   /**
    * Returns true if the given node id is allowed to store things
    * persistently on disk. Private Browsing and local content are not
    * allowed to store persistent data.
    */
   bool isPersistentStorageAllowed(in ACString nodeId);
 
--- a/dom/media/nsIAudioDeviceInfo.idl
+++ b/dom/media/nsIAudioDeviceInfo.idl
@@ -3,21 +3,21 @@
  * 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 "nsISupports.idl"
 
 [scriptable, uuid(feb979a8-f8cc-4522-9dff-6c055ca50762)]
 interface nsIAudioDeviceInfo : nsISupports
 {
-  readonly attribute DOMString name;
+  readonly attribute AString name;
 
-  readonly attribute DOMString groupId;
+  readonly attribute AString groupId;
 
-  readonly attribute DOMString vendor;
+  readonly attribute AString vendor;
 
   // type: Unknown/Input/Output
   const unsigned short TYPE_UNKNOWN = 0;
   const unsigned short TYPE_INPUT   = 1;
   const unsigned short TYPE_OUTPUT  = 2;
   readonly attribute unsigned short type;
 
   // state: Disabled/Unplugged/Enabled
--- a/dom/media/nsIDOMNavigatorUserMedia.idl
+++ b/dom/media/nsIDOMNavigatorUserMedia.idl
@@ -3,21 +3,21 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsISupports.idl"
 #include "nsIVariant.idl"
 
 [scriptable, builtinclass, uuid(ba3b2e08-1c07-4cd3-8822-f4d7e35ff2ae)]
 interface nsIMediaDevice : nsISupports
 {
-  readonly attribute DOMString type;
-  readonly attribute DOMString name;
-  readonly attribute DOMString id;
-  readonly attribute DOMString mediaSource;
-  readonly attribute DOMString rawId;
+  readonly attribute AString type;
+  readonly attribute AString name;
+  readonly attribute AString id;
+  readonly attribute AString mediaSource;
+  readonly attribute AString rawId;
   readonly attribute boolean scary;
 };
 
 [scriptable, function, uuid(24544878-d35e-4962-8c5f-fb84e97bdfee)]
 interface nsIGetUserMediaDevicesSuccessCallback : nsISupports
 {
   void onSuccess(in nsIVariant devices);
 };
--- a/dom/media/webspeech/synth/nsISpeechService.idl
+++ b/dom/media/webspeech/synth/nsISpeechService.idl
@@ -87,28 +87,28 @@ interface nsISpeechTask : nsISupports
   /**
    * Dispatch boundary event.
    *
    * @param aName        name of boundary, 'word' or 'sentence'
    * @param aElapsedTime time in seconds since speech has started.
    * @param aCharIndex   offset of spoken characters.
    * @param aCharLength  length of text in boundary event to be spoken.
    */
-  [optional_argc] void dispatchBoundary(in DOMString aName, in float aElapsedTime,
+  [optional_argc] void dispatchBoundary(in AString aName, in float aElapsedTime,
                                         in unsigned long aCharIndex,
                                         [optional] in unsigned long aCharLength);
 
   /**
    * Dispatch mark event.
    *
    * @param aName        mark identifier.
    * @param aElapsedTime time in seconds since speech has started.
    * @param aCharIndex   offset of spoken characters.
    */
-  void dispatchMark(in DOMString aName, in float aElapsedTime, in unsigned long aCharIndex);
+  void dispatchMark(in AString aName, in float aElapsedTime, in unsigned long aCharIndex);
 };
 
 /**
  * The main interface of a speech synthesis service.
  *
  * A service is responsible for outputting audio.
  * The service dispatches events, starting with dispatchStart() and ending with
  * dispatchEnd or dispatchError().
@@ -126,17 +126,17 @@ interface nsISpeechService : nsISupports
    * @param aText   text to utter.
    * @param aUri    unique voice identifier.
    * @param aVolume volume to speak voice in. Only relevant for indirect audio.
    * @param aRate   rate to speak voice in.
    * @param aPitch  pitch to speak voice in.
    * @param aTask  task instance for utterance, used for sending events or audio
    *                 data back to browser.
    */
-  void speak(in DOMString aText, in DOMString aUri,
+  void speak(in AString aText, in AString aUri,
              in float aVolume, in float aRate, in float aPitch,
              in nsISpeechTask aTask);
 };
 
 %{C++
 // This is the service category speech services could use to start up as
 // a component.
 #define NS_SPEECH_SYNTH_STARTED "speech-synth-started"
--- a/dom/media/webspeech/synth/nsISynthVoiceRegistry.idl
+++ b/dom/media/webspeech/synth/nsISynthVoiceRegistry.idl
@@ -15,53 +15,53 @@ interface nsISynthVoiceRegistry : nsISup
    *
    * @param aService          the service that provides this voice.
    * @param aUri              a unique identifier for this voice.
    * @param aName             human-readable name for this voice.
    * @param aLang             a BCP 47 language tag.
    * @param aLocalService     true if service does not require network.
    * @param aQueuesUtterances true if voice only speaks one utterance at a time
    */
-  void addVoice(in nsISpeechService aService, in DOMString aUri,
-                in DOMString aName, in DOMString aLang,
+  void addVoice(in nsISpeechService aService, in AString aUri,
+                in AString aName, in AString aLang,
                 in boolean aLocalService, in boolean aQueuesUtterances);
 
   /**
    * Remove a speech synthesis voice.
    *
    * @param aService the service that was used to add the voice.
    * @param aUri     a unique identifier of an existing voice.
    */
-  void removeVoice(in nsISpeechService aService, in DOMString aUri);
+  void removeVoice(in nsISpeechService aService, in AString aUri);
 
   /**
    * Notify content of voice availability changes. This allows content
    * to be notified of voice catalog changes in real time.
    */
   void notifyVoicesChanged();
 
   /**
    * Set a voice as default.
    *
    * @param aUri       a unique identifier of an existing voice.
    * @param aIsDefault true if this voice should be toggled as default.
    */
-  void setDefaultVoice(in DOMString aUri, in boolean aIsDefault);
+  void setDefaultVoice(in AString aUri, in boolean aIsDefault);
 
   readonly attribute uint32_t voiceCount;
 
   AString getVoice(in uint32_t aIndex);
 
-  bool isDefaultVoice(in DOMString aUri);
+  bool isDefaultVoice(in AString aUri);
 
-  bool isLocalVoice(in DOMString aUri);
+  bool isLocalVoice(in AString aUri);
 
-  AString getVoiceLang(in DOMString aUri);
+  AString getVoiceLang(in AString aUri);
 
-  AString getVoiceName(in DOMString aUri);
+  AString getVoiceName(in AString aUri);
 };
 
 %{C++
 #define NS_SYNTHVOICEREGISTRY_CID                   \
   { /* {7090524d-5574-4492-a77f-d8d558ced59d} */       \
     0x7090524d,                                        \
     0x5574,                                            \
     0x4492,                                            \
--- a/dom/network/interfaces/nsITCPSocketCallback.idl
+++ b/dom/network/interfaces/nsITCPSocketCallback.idl
@@ -28,23 +28,23 @@
 interface nsITCPSocketCallback : nsISupports {
   // Limitation of TCPSocket's buffer size.
   const unsigned long BUFFER_SIZE = 65536;
 
   // Dispatch an "error" event at this object with the given name and type.
   void fireErrorEvent(in AString name, in AString type);
 
   // Dispatch a "data" event at this object with a string
-  void fireDataStringEvent(in DOMString type, in ACString data);
+  void fireDataStringEvent(in AString type, in ACString data);
 
   // Dispatch a "data" event at this object with an Array
-  void fireDataArrayEvent(in DOMString type, [const] in nsUint8TArrayRef data);
+  void fireDataArrayEvent(in AString type, [const] in nsUint8TArrayRef data);
 
   // Dispatch an event of the given type at this object.
-  void fireEvent(in DOMString type);
+  void fireEvent(in AString type);
 
   // Update the DOM object's readyState.
   // @param readyState
   //        new ready state
   void updateReadyState(in unsigned long readystate);
 
   // Update the DOM object's bufferedAmount value with a tracking number to
   // to allow tracking of which writes are "in-flight"
--- a/dom/power/nsIDOMWakeLockListener.idl
+++ b/dom/power/nsIDOMWakeLockListener.idl
@@ -20,10 +20,10 @@ interface nsIDOMMozWakeLockListener : ns
    *    and it is visible.
    *
    *  - "locked-background" - at least one window holds the wake lock,
    *    but all of them are hidden.
    *
    * @param aTopic The resource name related to the wake lock.
    * @param aState The wake lock state
    */
-  void callback(in DOMString aTopic, in DOMString aState);
+  void callback(in AString aTopic, in AString aState);
 };
--- a/dom/power/nsIPowerManagerService.idl
+++ b/dom/power/nsIPowerManagerService.idl
@@ -16,17 +16,17 @@ interface mozIDOMWindow;
 /**
  * For use with non-content code.
  */
 [scriptable, builtinclass, uuid(ba7ca4c1-9d92-4425-a83b-85dd7fa953f7)]
 interface nsIPowerManagerService : nsISupports
 {
   void              addWakeLockListener(in nsIDOMMozWakeLockListener aListener);
   void              removeWakeLockListener(in nsIDOMMozWakeLockListener aListener);
-  DOMString         getWakeLockState(in DOMString aTopic);
+  AString           getWakeLockState(in AString aTopic);
 
   /**
    * Return a wake lock (MozWakeLock) object of aTopic associated with aWindow.
    * A wake lock without associated window, e.g. used in chrome, is
    * always considered invisible.
    */
-  nsISupports newWakeLock(in DOMString aTopic, [optional] in mozIDOMWindow aWindow);
+  nsISupports newWakeLock(in AString aTopic, [optional] in mozIDOMWindow aWindow);
 };
--- a/dom/presentation/interfaces/nsIPresentationControlChannel.idl
+++ b/dom/presentation/interfaces/nsIPresentationControlChannel.idl
@@ -21,17 +21,17 @@ interface nsIPresentationChannelDescript
   readonly attribute nsIArray tcpAddress;
 
   // Port number for TCP channel.
   // Should only be used while type == TYPE_TCP.
   readonly attribute uint16_t tcpPort;
 
   // SDP for Data Channel.
   // Should only be used while type == TYPE_DATACHANNEL.
-  readonly attribute DOMString dataChannelSDP;
+  readonly attribute AString dataChannelSDP;
 };
 
 /*
  * The callbacks for events on control channel.
  */
 [scriptable, uuid(96dd548f-7d0f-43c1-b1ad-28e666cf1e82)]
 interface nsIPresentationControlChannelListener: nsISupports
 {
@@ -46,17 +46,17 @@ interface nsIPresentationControlChannelL
    * @param answer The received answer.
    */
   void onAnswer(in nsIPresentationChannelDescription answer);
 
   /*
    * Callback for receiving ICE candidate from remote endpoint.
    * @param answer The received answer.
    */
-  void onIceCandidate(in DOMString candidate);
+  void onIceCandidate(in AString candidate);
 
   /*
    * The callback for notifying channel connected. This should be async called
    * after nsIPresentationDevice::establishControlChannel.
    */
   void notifyConnected();
 
   /*
@@ -100,40 +100,40 @@ interface nsIPresentationControlChannel:
   void sendAnswer(in nsIPresentationChannelDescription answer);
 
   /*
    * Send ICE candidate to remote endpoint. |onIceCandidate| should be invoked
    * on remote endpoint.
    * @param candidate The candidate to send
    * @throws NS_ERROR_FAILURE on failure
    */
-  void sendIceCandidate(in DOMString candidate);
+  void sendIceCandidate(in AString candidate);
 
   /*
    * Launch a presentation on remote endpoint.
    * @param presentationId The Id for representing this session.
    * @param url The URL requested to open by remote device.
    * @throws NS_ERROR_FAILURE on failure
    */
-  void launch(in DOMString presentationId, in DOMString url);
+  void launch(in AString presentationId, in AString url);
 
   /*
    * Terminate a presentation on remote endpoint.
    * @param presentationId The Id for representing this session.
    * @throws NS_ERROR_FAILURE on failure
    */
-  void terminate(in DOMString presentationId);
+  void terminate(in AString presentationId);
 
   /*
    * Disconnect the control channel.
    * @param reason The reason of disconnecting channel; NS_OK represents normal.
    */
   void disconnect(in nsresult reason);
 
   /*
    * Reconnect a presentation on remote endpoint.
    * Note that only controller is allowed to reconnect a session.
    * @param presentationId The Id for representing this session.
    * @param url The URL requested to open by remote device.
    * @throws NS_ERROR_FAILURE on failure
    */
-  void reconnect(in DOMString presentationId, in DOMString url);
+  void reconnect(in AString presentationId, in AString url);
 };
--- a/dom/presentation/interfaces/nsIPresentationControlService.idl
+++ b/dom/presentation/interfaces/nsIPresentationControlService.idl
@@ -50,42 +50,42 @@ interface nsIPresentationControlServerLi
   /**
    * Callback while the remote host is requesting to start a presentation session.
    * @param aDeviceInfo The device information related to the remote host.
    * @param aUrl The URL requested to open by remote device.
    * @param aPresentationId The Id for representing this session.
    * @param aControlChannel The control channel for this session.
    */
   void onSessionRequest(in nsITCPDeviceInfo aDeviceInfo,
-                        in DOMString aUrl,
-                        in DOMString aPresentationId,
+                        in AString aUrl,
+                        in AString aPresentationId,
                         in nsIPresentationControlChannel aControlChannel);
 
   /**
    * Callback while the remote host is requesting to terminate a presentation session.
    * @param aDeviceInfo The device information related to the remote host.
    * @param aPresentationId The Id for representing this session.
    * @param aControlChannel The control channel for this session.
    * @param aIsFromReceiver true if termination is initiated by receiver.
    */
   void onTerminateRequest(in nsITCPDeviceInfo aDeviceInfo,
-                          in DOMString aPresentationId,
+                          in AString aPresentationId,
                           in nsIPresentationControlChannel aControlChannel,
                           in boolean aIsFromReceiver);
 
   /**
    * Callback while the remote host is requesting to reconnect a presentation session.
    * @param aDeviceInfo The device information related to the remote host.
    * @param aUrl The URL requested to open by remote device.
    * @param aPresentationId The Id for representing this session.
    * @param aControlChannel The control channel for this session.
    */
   void onReconnectRequest(in nsITCPDeviceInfo aDeviceInfo,
-                          in DOMString url,
-                          in DOMString aPresentationId,
+                          in AString url,
+                          in AString aPresentationId,
                           in nsIPresentationControlChannel aControlChannel);
 };
 
 /**
  * Presentation control service which can be used for both presentation
  * control client and server.
  */
 [scriptable, uuid(55d6b605-2389-4aae-a8fe-60d4440540ea)]
--- a/dom/presentation/interfaces/nsIPresentationDevice.idl
+++ b/dom/presentation/interfaces/nsIPresentationDevice.idl
@@ -32,12 +32,12 @@ interface nsIPresentationDevice : nsISup
   // Do something when presentation session is disconnected.
   void disconnect();
 
   /*
    * Query if requested presentation URL is supported.
    * @params requestedUrl the designated URL for a presentation request.
    * @returns true if designated URL is supported.
    */
-  boolean isRequestedUrlSupported(in DOMString requestedUrl);
+  boolean isRequestedUrlSupported(in AString requestedUrl);
 };
 
 
--- a/dom/presentation/interfaces/nsIPresentationDevicePrompt.idl
+++ b/dom/presentation/interfaces/nsIPresentationDevicePrompt.idl
@@ -16,17 +16,17 @@ webidl EventTarget;
 
 /*
  * The information and callbacks for device selection
  */
 [scriptable, uuid(b2aa7f6a-9448-446a-bba4-9c29638b0ed4)]
 interface nsIPresentationDeviceRequest : nsISupports
 {
   // The origin which initiate the request.
-  readonly attribute DOMString origin;
+  readonly attribute AString origin;
 
   // The array of candidate URLs.
   readonly attribute nsIArray requestURLs;
 
   // The XUL browser element that the request was originated in.
   readonly attribute EventTarget chromeEventHandler;
 
   // The principal of the request.
--- a/dom/presentation/interfaces/nsIPresentationDeviceProvider.idl
+++ b/dom/presentation/interfaces/nsIPresentationDeviceProvider.idl
@@ -24,42 +24,42 @@ interface nsIPresentationDeviceListener:
   /*
    * Callback while the remote device is requesting to start a presentation session.
    * @param device The remote device that sent session request.
    * @param url The URL requested to open by remote device.
    * @param presentationId The Id for representing this session.
    * @param controlChannel The control channel for this session.
    */
   void onSessionRequest(in nsIPresentationDevice device,
-                        in DOMString url,
-                        in DOMString presentationId,
+                        in AString url,
+                        in AString presentationId,
                         in nsIPresentationControlChannel controlChannel);
 
   /*
    * Callback while the remote device is requesting to terminate a presentation session.
    * @param device The remote device that sent session request.
    * @param presentationId The Id for representing this session.
    * @param controlChannel The control channel for this session.
    * @param aIsFromReceiver true if termination is initiated by receiver.
    */
   void onTerminateRequest(in nsIPresentationDevice device,
-                          in DOMString presentationId,
+                          in AString presentationId,
                           in nsIPresentationControlChannel controlChannel,
                           in boolean aIsFromReceiver);
 
   /*
    * Callback while the remote device is requesting to reconnect a presentation session.
    * @param device The remote device that sent session request.
    * @param aUrl The URL requested to open by remote device.
    * @param presentationId The Id for representing this session.
    * @param controlChannel The control channel for this session.
    */
   void onReconnectRequest(in nsIPresentationDevice device,
-                          in DOMString url,
-                          in DOMString presentationId,
+                          in AString url,
+                          in AString presentationId,
                           in nsIPresentationControlChannel controlChannel);
 };
 
 /*
  * Device provider for any device protocol, can be registered as default
  * providers by adding its contractID to category "presentation-device-provider".
  */
 [scriptable, uuid(3db2578a-0f50-44ad-b01b-28427b71b7bf)]
--- a/dom/presentation/interfaces/nsIPresentationListener.idl
+++ b/dom/presentation/interfaces/nsIPresentationListener.idl
@@ -22,29 +22,29 @@ interface nsIPresentationSessionListener
   const unsigned short STATE_CONNECTING = 0;
   const unsigned short STATE_CONNECTED = 1;
   const unsigned short STATE_CLOSED = 2;
   const unsigned short STATE_TERMINATED = 3;
 
   /*
    * Called when session state changes.
    */
-  void notifyStateChange(in DOMString sessionId,
+  void notifyStateChange(in AString sessionId,
                          in unsigned short state,
                          in nsresult reason);
 
   /*
    * Called when receive messages.
    */
-  void notifyMessage(in DOMString sessionId,
+  void notifyMessage(in AString sessionId,
                      in ACString data,
                      in boolean isBinary);
 };
 
 [scriptable, uuid(27f101d7-9ed1-429e-b4f8-43b00e8e111c)]
 interface nsIPresentationRespondingListener : nsISupports
 {
   /*
    * Called when an incoming session connects.
    */
   void notifySessionConnect(in unsigned long long windowId,
-                            in DOMString sessionId);
+                            in AString sessionId);
 };
--- a/dom/presentation/interfaces/nsIPresentationRequestUIGlue.idl
+++ b/dom/presentation/interfaces/nsIPresentationRequestUIGlue.idl
@@ -18,12 +18,12 @@ interface nsIPresentationRequestUIGlue :
    * This method is called to open the responding app/page when
    * a presentation request comes in at receiver side.
    *
    * @param url       The url of the request.
    * @param sessionId The session ID of the request.
    *
    * @return A promise that resolves to the opening frame.
    */
-  Promise sendRequest(in DOMString url,
-                      in DOMString sessionId,
+  Promise sendRequest(in AString url,
+                      in AString sessionId,
                       in nsIPresentationDevice device);
 };
--- a/dom/presentation/interfaces/nsIPresentationService.idl
+++ b/dom/presentation/interfaces/nsIPresentationService.idl
@@ -31,17 +31,17 @@ webidl EventTarget;
 [scriptable, uuid(12073206-0065-4b10-9488-a6eb9b23e65b)]
 interface nsIPresentationServiceCallback : nsISupports
 {
   /*
    * Called when the operation succeeds.
    *
    * @param url: the selected request url used to start or reconnect a session.
    */
-  void notifySuccess(in DOMString url);
+  void notifySuccess(in AString url);
 
   /*
    * Called when the operation fails.
    *
    * @param error: error message.
    */
   void notifyError(in nsresult error);
 };
@@ -75,89 +75,89 @@ interface nsIPresentationService : nsISu
    * @param principal: The principal that initiated the session.
    * @param callback: Invoke the callback when the operation is completed.
    *                  NotifySuccess() is called with |id| if a session is
    *                  established successfully with the selected device.
    *                  Otherwise, NotifyError() is called with a error message.
    * @param constructor: The constructor for creating a transport builder.
    */
   [noscript] void startSession(in URLArrayRef urls,
-                               in DOMString sessionId,
-                               in DOMString origin,
-                               in DOMString deviceId,
+                               in AString sessionId,
+                               in AString origin,
+                               in AString deviceId,
                                in unsigned long long windowId,
                                in EventTarget eventTarget,
                                in nsIPrincipal principal,
                                in nsIPresentationServiceCallback callback,
                                in nsIPresentationTransportBuilderConstructor constructor);
 
   /*
    * Send the message to the session.
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    * @param data: the message being sent out.
    */
-  void sendSessionMessage(in DOMString sessionId,
-							            in uint8_t role,
-                          in DOMString data);
+  void sendSessionMessage(in AString sessionId,
+                          in uint8_t role,
+                          in AString data);
 
   /*
    * Send the binary message to the session.
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    * @param data: the message being sent out.
    */
-  void sendSessionBinaryMsg(in DOMString sessionId,
+  void sendSessionBinaryMsg(in AString sessionId,
                             in uint8_t role,
                             in ACString data);
 
   /*
    * Send the blob to the session.
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    * @param blob: The input blob to be sent.
    */
-  void sendSessionBlob(in DOMString sessionId,
+  void sendSessionBlob(in AString sessionId,
                        in uint8_t role,
                        in Blob blob);
 
   /*
    * Close the session.
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    */
-  void closeSession(in DOMString sessionId,
+  void closeSession(in AString sessionId,
                     in uint8_t role,
                     in uint8_t closedReason);
 
   /*
    * Terminate the session.
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    */
-  void terminateSession(in DOMString sessionId,
+  void terminateSession(in AString sessionId,
                         in uint8_t role);
 
   /*
    * Reconnect the session.
    *
    * @param url: The request Urls.
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    * @param callback: NotifySuccess() is called when a control channel
    *                  is opened successfully.
    *                  Otherwise, NotifyError() is called with a error message.
    */
   [noscript] void reconnectSession(in URLArrayRef urls,
-                                   in DOMString sessionId,
+                                   in AString sessionId,
                                    in uint8_t role,
                                    in nsIPresentationServiceCallback callback);
 
   /*
    * Register an availability listener. Must be called from the main thread.
    *
    * @param availabilityUrls: The Urls that this listener is interested in.
    * @param listener: The listener to register.
@@ -178,27 +178,27 @@ interface nsIPresentationService : nsISu
 
   /*
    * Register a session listener. Must be called from the main thread.
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    * @param listener: The listener to register.
    */
-  void registerSessionListener(in DOMString sessionId,
+  void registerSessionListener(in AString sessionId,
                                in uint8_t role,
                                in nsIPresentationSessionListener listener);
 
   /*
    * Unregister a session listener. Must be called from the main thread.
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    */
-  void unregisterSessionListener(in DOMString sessionId,
+  void unregisterSessionListener(in AString sessionId,
                                  in uint8_t role);
 
   /*
    * Register a responding listener. Must be called from the main thread.
    *
    * @param windowId: The window ID associated with the listener.
    * @param listener: The listener to register.
    */
@@ -215,62 +215,62 @@ interface nsIPresentationService : nsISu
    * Notify the receiver page is ready for presentation use.
    *
    * @param sessionId An ID to identify presentation session.
    * @param windowId  The inner window ID associated with the presentation
    *                  session.
    * @param isLoading true if receiver page is loading successfully.
    * @param constructor: The constructor for creating a transport builder.
    */
-  void notifyReceiverReady(in DOMString sessionId,
+  void notifyReceiverReady(in AString sessionId,
                            in unsigned long long windowId,
                            in boolean isLoading,
                            in nsIPresentationTransportBuilderConstructor constructor);
 
   /*
    * Notify the transport is closed
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    * @param reason: the error message. NS_OK indicates it is closed normally.
    */
-  void NotifyTransportClosed(in DOMString sessionId,
+  void NotifyTransportClosed(in AString sessionId,
                              in uint8_t role,
                              in nsresult reason);
 
   /*
    * Untrack the relevant info about the presentation session if there's any.
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    */
-  void untrackSessionInfo(in DOMString sessionId, in uint8_t role);
+  void untrackSessionInfo(in AString sessionId, in uint8_t role);
 
   /*
    * The windowId for building RTCDataChannel session transport
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    */
-  unsigned long long getWindowIdBySessionId(in DOMString sessionId,
+  unsigned long long getWindowIdBySessionId(in AString sessionId,
                                             in uint8_t role);
 
   /*
    * Update the mapping of the session ID and window ID.
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    * @param windowId: The inner window ID associated with the presentation
    *                  session.
    */
-  void updateWindowIdBySessionId(in DOMString sessionId,
+  void updateWindowIdBySessionId(in AString sessionId,
                                  in uint8_t role,
                                  in unsigned long long windowId);
 
   /*
    * To build the session transport.
    * NOTE: This function should be only called at controller side.
    *
    * @param sessionId: An ID to identify presentation session.
    * @param role: Identify the function called by controller or receiver.
    */
-  void buildTransport(in DOMString sessionId, in uint8_t role);
+  void buildTransport(in AString sessionId, in uint8_t role);
 };
--- a/dom/presentation/interfaces/nsIPresentationSessionRequest.idl
+++ b/dom/presentation/interfaces/nsIPresentationSessionRequest.idl
@@ -20,16 +20,16 @@ interface nsIPresentationControlChannel;
  */
 [scriptable, uuid(d808a084-d0f8-455a-a8df-5879e05a755b)]
 interface nsIPresentationSessionRequest: nsISupports
 {
   // The device which requesting the presentation session.
   readonly attribute nsIPresentationDevice device;
 
   // The URL requested to open by remote device.
-  readonly attribute DOMString url;
+  readonly attribute AString url;
 
   // The Id for representing this session.
-  readonly attribute DOMString presentationId;
+  readonly attribute AString presentationId;
 
   // The control channel for this session.
   readonly attribute nsIPresentationControlChannel controlChannel;
 };
--- a/dom/presentation/interfaces/nsIPresentationSessionTransport.idl
+++ b/dom/presentation/interfaces/nsIPresentationSessionTransport.idl
@@ -43,17 +43,17 @@ interface nsIPresentationSessionTranspor
    * Should set callback before |enableDataNotification| is called.
    */
   void enableDataNotification();
 
   /*
    * Send message to the remote endpoint.
    * @param data The message to send.
    */
-  void send(in DOMString data);
+  void send(in AString data);
 
   /*
    * Send the binary message to the remote endpoint.
    * @param data: the message being sent out.
    */
   void sendBinaryMsg(in ACString data);
 
   /*
--- a/dom/presentation/interfaces/nsIPresentationSessionTransportBuilder.idl
+++ b/dom/presentation/interfaces/nsIPresentationSessionTransportBuilder.idl
@@ -14,17 +14,17 @@ interface nsIPresentationSessionTranspor
 interface nsIPresentationSessionTransportBuilderListener : nsISupports
 {
   // Should set |transport.callback| in |onSessionTransport|.
   void onSessionTransport(in nsIPresentationSessionTransport transport);
   void onError(in nsresult reason);
 
   void sendOffer(in nsIPresentationChannelDescription offer);
   void sendAnswer(in nsIPresentationChannelDescription answer);
-  void sendIceCandidate(in DOMString candidate);
+  void sendIceCandidate(in AString candidate);
   void close(in nsresult reason);
 };
 
 [scriptable, uuid(2fdbe67d-80f9-48dc-8237-5bef8fa19801)]
 interface nsIPresentationSessionTransportBuilder : nsISupports
 {
 };
 
@@ -70,11 +70,11 @@ interface nsIPresentationDataChannelSess
    */
   void buildDataChannelTransport(in uint8_t aRole,
                                  in mozIDOMWindow aWindow,
                                  in nsIPresentationSessionTransportBuilderListener aListener);
 
   // Bug 1275150 - Merge TCP builder with the following APIs
   void onOffer(in nsIPresentationChannelDescription offer);
   void onAnswer(in nsIPresentationChannelDescription answer);
-  void onIceCandidate(in DOMString candidate);
+  void onIceCandidate(in AString candidate);
   void notifyDisconnected(in nsresult reason);
 };
--- a/dom/presentation/interfaces/nsIPresentationTerminateRequest.idl
+++ b/dom/presentation/interfaces/nsIPresentationTerminateRequest.idl
@@ -17,17 +17,17 @@ interface nsIPresentationControlChannel;
  */
 [scriptable, uuid(3ddbf3a4-53ee-4b70-9bbc-58ac90dce6b5)]
 interface nsIPresentationTerminateRequest: nsISupports
 {
   // The device which requesting to terminate presentation session.
   readonly attribute nsIPresentationDevice device;
 
   // The Id for representing this session.
-  readonly attribute DOMString presentationId;
+  readonly attribute AString presentationId;
 
   // The control channel for this session.
   // Should only use this channel to complete session termination.
   readonly attribute nsIPresentationControlChannel controlChannel;
 
   // True if termination is initiated by receiver.
   readonly attribute boolean isFromReceiver;
 };
--- a/dom/workers/nsIWorkerDebugger.idl
+++ b/dom/workers/nsIWorkerDebugger.idl
@@ -3,20 +3,20 @@
 interface mozIDOMWindow;
 interface nsIPrincipal;
 
 [scriptable, uuid(9cf3b48e-361d-486a-8917-55cf8d00bb41)]
 interface nsIWorkerDebuggerListener : nsISupports
 {
   void onClose();
 
-  void onError(in DOMString filename, in unsigned long lineno,
-               in DOMString message);
+  void onError(in AString filename, in unsigned long lineno,
+               in AString message);
 
-  void onMessage(in DOMString message);
+  void onMessage(in AString message);
 };
 
 [scriptable, builtinclass, uuid(22f93aa3-8a05-46be-87e0-fa93bf8a8eff)]
 interface nsIWorkerDebugger : nsISupports
 {
   const unsigned long TYPE_DEDICATED = 0;
   const unsigned long TYPE_SHARED = 1;
   const unsigned long TYPE_SERVICE = 2;
@@ -26,25 +26,25 @@ interface nsIWorkerDebugger : nsISupport
   readonly attribute bool isChrome;
 
   readonly attribute bool isInitialized;
 
   readonly attribute nsIWorkerDebugger parent;
 
   readonly attribute unsigned long type;
 
-  readonly attribute DOMString url;
+  readonly attribute AString url;
 
   readonly attribute mozIDOMWindow window;
 
   readonly attribute nsIPrincipal principal;
 
   readonly attribute unsigned long serviceWorkerID;
 
-  void initialize(in DOMString url);
+  void initialize(in AString url);
 
   [binaryname(PostMessageMoz)]
-  void postMessage(in DOMString message);
+  void postMessage(in AString message);
 
   void addListener(in nsIWorkerDebuggerListener listener);
 
   void removeListener(in nsIWorkerDebuggerListener listener);
 };
--- a/dom/xslt/txIEXSLTRegExFunctions.idl
+++ b/dom/xslt/txIEXSLTRegExFunctions.idl
@@ -6,16 +6,16 @@
 #include "nsISupports.idl"
 
 webidl Document;
 webidl DocumentFragment;
 
 [scriptable, uuid(c180e993-aced-4839-95a0-ecd5ff138be9)]
 interface txIEXSLTRegExFunctions : nsISupports
 {
-    DocumentFragment match(in DOMString aString, in DOMString aRegEx,
-                           in DOMString aFlags,
+    DocumentFragment match(in AString aString, in AString aRegEx,
+                           in AString aFlags,
                            in Document aResultDocument);
-    DOMString replace(in DOMString aString, in DOMString aRegEx,
-                      in DOMString aFlags, in DOMString aReplace);
-    boolean test(in DOMString aString, in DOMString aRegEx,
-                 in DOMString aFlags);
+    AString replace(in AString aString, in AString aRegEx,
+                    in AString aFlags, in AString aReplace);
+    boolean test(in AString aString, in AString aRegEx,
+                 in AString aFlags);
 };
--- a/editor/nsIEditActionListener.idl
+++ b/editor/nsIEditActionListener.idl
@@ -30,17 +30,17 @@ Editor Action Listener interface to outs
 interface nsIEditActionListener : nsISupports
 {
   /**
    * Called after the editor creates a node.
    * @param aTag      The tag name of the DOM Node to create.
    * @param aNewNode  The DOM Node that was created.
    * @param aResult   The result of the create node operation.
    */
-  void DidCreateNode(in DOMString aTag,
+  void DidCreateNode(in AString aTag,
                      in Node aNewNode,
                      in nsresult aResult);
 
   /**
    * Called after the editor inserts a node.
    * @param aNode     The DOM Node to insert.
    * @param aResult   The result of the insert node operation.
    */
@@ -82,17 +82,17 @@ interface nsIEditActionListener : nsISup
    * Called after the editor inserts text.
    * @param aTextNode   This node getting inserted text.
    * @param aOffset     The offset in aTextNode to insert at.
    * @param aString     The string that gets inserted.
    * @param aResult     The result of the insert text operation.
    */
   void DidInsertText(in CharacterData       aTextNode,
                      in long                aOffset,
-                     in DOMString           aString,
+                     in AString             aString,
                      in nsresult            aResult);
 
   /**
    * Called before the editor deletes text.
    * @param aTextNode   This node getting text deleted.
    * @param aOffset     The offset in aTextNode to delete at.
    * @param aLength     The amount of text to delete.
    */
--- a/editor/nsIEditor.idl
+++ b/editor/nsIEditor.idl
@@ -52,17 +52,17 @@ interface nsIEditor  : nsISupports
 
   readonly attribute Selection selection;
 
   void setAttributeOrEquivalent(in Element element,
                                 in AString sourceAttrName,
                                 in AString sourceAttrValue,
                                 in boolean aSuppressTransaction);
   void removeAttributeOrEquivalent(in Element element,
-                                   in DOMString sourceAttrName,
+                                   in AString sourceAttrName,
                                    in boolean aSuppressTransaction);
 
   /** edit flags for this editor.  May be set at any time. */
   attribute unsigned long flags;
 
   /**
    * the MimeType of the document
    */
--- a/editor/nsIPlaintextEditor.idl
+++ b/editor/nsIPlaintextEditor.idl
@@ -89,17 +89,17 @@ interface nsIPlaintextEditor : nsISuppor
   /**
    * Inserts a string at the current location,
    * given by the selection.
    * If the selection is not collapsed, the selection is deleted
    * and the insertion takes place at the resulting collapsed selection.
    *
    * @param aString   the string to be inserted
    */
-   void insertText(in DOMString aStringToInsert);
+   void insertText(in AString aStringToInsert);
 
   /**
    * Insert a line break into the content model.
    * The interpretation of a break is up to the implementation:
    * it may enter a character, split a node in the tree, etc.
    * This may be more efficient than calling InsertText with a newline.
    */
   void insertLineBreak();
--- a/editor/nsIURIRefObject.idl
+++ b/editor/nsIURIRefObject.idl
@@ -24,20 +24,20 @@ interface nsIURIRefObject  : nsISupports
   /**
    * Go back to the beginning of the attribute list.
    */
   void Reset();
 
   /**
    * Return the next rewritable URI.
    */
-  DOMString GetNextURI();
+  AString GetNextURI();
 
   /**
    * Go back to the beginning of the attribute list
    *
    * @param aOldPat  Old pattern to be replaced, e.g. file:///a/b/
    * @param aNewPat  New pattern to be replaced, e.g. http://mypage.aol.com/
    * @param aMakeRel Rewrite links as relative vs. absolute
    */
-  void RewriteAllURIs(in DOMString aOldPat, in DOMString aNewPat,
+  void RewriteAllURIs(in AString aOldPat, in AString aNewPat,
                       in boolean aMakeRel);
 };
--- a/intl/l10n/mozIDOMLocalization.idl
+++ b/intl/l10n/mozIDOMLocalization.idl
@@ -13,17 +13,17 @@ webidl Node;
 interface mozIDOMLocalization : nsISupports
 {
   unsigned long addResourceIds(in Array<AString> resourceIds, in bool aEager);
   unsigned long removeResourceIds(in Array<AString> resourceIds);
   void registerObservers();
 
   Promise formatMessages(in Array<jsval> aKeys);
   Promise formatValues(in Array<jsval> aKeys);
-  Promise formatValue(in DOMString aId, [optional] in jsval aArgs);
+  Promise formatValue(in AString aId, [optional] in jsval aArgs);
 
   Promise translateFragment(in Node aNode);
   Promise translateElements(in Array<Element> aElements);
 
   void connectRoot(in Element aElement);
   Promise translateRoots();
   readonly attribute Promise ready;
 };
--- a/netwerk/base/nsIPermissionManager.idl
+++ b/netwerk/base/nsIPermissionManager.idl
@@ -287,17 +287,17 @@ interface nsIPermissionManager : nsISupp
    * @return an nsISimpleEnumerator interface that allows access to
    *         nsIPermission objects
    */
   readonly attribute nsISimpleEnumerator enumerator;
 
   /**
    * Remove all permissions that will match the origin pattern.
    */
-  void removePermissionsWithAttributes(in DOMString patternAsJSON);
+  void removePermissionsWithAttributes(in AString patternAsJSON);
 
   /**
    * If the current permission is set to expire, reset the expiration time. If
    * there is no permission or the current permission does not expire, this
    * method will silently return.
    *
    * @param sessionExpiretime  an integer representation of when this permission
    *                           should be forgotten (milliseconds since
--- a/netwerk/cookie/nsICookieManager.idl
+++ b/netwerk/cookie/nsICookieManager.idl
@@ -223,19 +223,19 @@ interface nsICookieManager : nsISupports
    * @param aPattern origin attribute pattern in JSON format
    *
    * @param aHost
    *        the host string to search for, e.g. "google.com". this should consist
    *        of only the host portion of a URI. see @add for a description of
    *        acceptable host strings. This attribute is optional. It will search
    *        all hosts if this attribute is not given.
    */
-  nsISimpleEnumerator getCookiesWithOriginAttributes(in DOMString aPattern,
+  nsISimpleEnumerator getCookiesWithOriginAttributes(in AString aPattern,
                                                      [optional] in AUTF8String aHost);
 
   /**
    * Remove all the cookies whose origin attributes matches aPattern
    *
    * @param aPattern origin attribute pattern in JSON format
    */
-  void removeCookiesWithOriginAttributes(in DOMString aPattern,
+  void removeCookiesWithOriginAttributes(in AString aPattern,
                                          [optional] in AUTF8String aHost);
 };
--- a/services/fxaccounts/interfaces/nsIFxAccountsUIGlue.idl
+++ b/services/fxaccounts/interfaces/nsIFxAccountsUIGlue.idl
@@ -6,10 +6,10 @@
 
 [scriptable, uuid(ab8d0700-9577-11e3-a5e2-0800200c9a66)]
 interface nsIFxAccountsUIGlue : nsISupports
 {
   // Returns a Promise.
   jsval signInFlow();
 
   // Returns a Promise.
-  jsval refreshAuthentication(in DOMString email);
+  jsval refreshAuthentication(in AString email);
 };
--- a/widget/nsIBaseWindow.idl
+++ b/widget/nsIBaseWindow.idl
@@ -161,24 +161,24 @@ interface nsIBaseWindow : nsISupports
 
 	On controls that don't support setting nativeWindow parents, setting this
 	will return a NS_ERROR_NOT_IMPLEMENTED error.
 	*/
 	attribute nativeWindow parentNativeWindow;
 
 	/*
 	This is the handle (HWND, GdkWindow*, ...) to the native window of the
-	control, exposed as a DOMString.
+	control, exposed as an AString.
 
-	@return DOMString in hex format with "0x" prepended, or empty string if
+	@return AString in hex format with "0x" prepended, or empty string if
 	mainWidget undefined
 
 	@throws NS_ERROR_NOT_IMPLEMENTED for non-XULWindows
 	*/
-	readonly attribute DOMString nativeHandle;
+	readonly attribute AString nativeHandle;
 
 	/*
 	Attribute controls the visibility of the object behind this interface.
 	Setting this attribute to false will hide the control.  Setting it to 
 	true will show it.
 	*/
 	attribute boolean visibility;
 
--- a/widget/nsIGfxInfo.idl
+++ b/widget/nsIGfxInfo.idl
@@ -11,62 +11,62 @@
 interface nsIGfxInfo : nsISupports
 {
   /*
    * These are win32-specific
    */
   readonly attribute boolean D2DEnabled;
   readonly attribute boolean DWriteEnabled;
   readonly attribute boolean usingGPUProcess;
-  readonly attribute DOMString DWriteVersion;
-  readonly attribute DOMString cleartypeParameters;
+  readonly attribute AString DWriteVersion;
+  readonly attribute AString cleartypeParameters;
 
   /*
    * These are valid across all platforms.
    */
-  readonly attribute DOMString ContentBackend;
+  readonly attribute AString ContentBackend;
   readonly attribute boolean WebRenderEnabled;
   readonly attribute boolean isHeadless;
   readonly attribute boolean UsesTiling;
   readonly attribute boolean ContentUsesTiling;
   readonly attribute boolean OffMainThreadPaintEnabled;
   readonly attribute long OffMainThreadPaintWorkerCount;
 
   // XXX: Switch to a list of devices, rather than explicitly numbering them.
 
   /**
    * The name of the display adapter.
    */
-  readonly attribute DOMString adapterDescription;
-  readonly attribute DOMString adapterDescription2;
+  readonly attribute AString adapterDescription;
+  readonly attribute AString adapterDescription2;
 
-  readonly attribute DOMString adapterDriver;
-  readonly attribute DOMString adapterDriver2;
+  readonly attribute AString adapterDriver;
+  readonly attribute AString adapterDriver2;
 
   /* These types are inspired by DXGI_ADAPTER_DESC */
-  readonly attribute DOMString adapterVendorID;
-  readonly attribute DOMString adapterVendorID2;
+  readonly attribute AString adapterVendorID;
+  readonly attribute AString adapterVendorID2;
 
-  readonly attribute DOMString adapterDeviceID;
-  readonly attribute DOMString adapterDeviceID2;
+  readonly attribute AString adapterDeviceID;
+  readonly attribute AString adapterDeviceID2;
 
-  readonly attribute DOMString adapterSubsysID;
-  readonly attribute DOMString adapterSubsysID2;
+  readonly attribute AString adapterSubsysID;
+  readonly attribute AString adapterSubsysID2;
 
   /**
    * The amount of RAM in MB in the display adapter.
    */
-  readonly attribute DOMString adapterRAM;
-  readonly attribute DOMString adapterRAM2;
+  readonly attribute AString adapterRAM;
+  readonly attribute AString adapterRAM2;
 
-  readonly attribute DOMString adapterDriverVersion;
-  readonly attribute DOMString adapterDriverVersion2;
+  readonly attribute AString adapterDriverVersion;
+  readonly attribute AString adapterDriverVersion2;
 
-  readonly attribute DOMString adapterDriverDate;
-  readonly attribute DOMString adapterDriverDate2;
+  readonly attribute AString adapterDriverDate;
+  readonly attribute AString adapterDriverDate2;
 
   readonly attribute boolean isGPU2Active;
 
   /**
    * Returns an array of objects describing each monitor. Guaranteed properties
    * are "screenWidth" and "screenHeight". This is only implemented on Desktop.
    *
    * Windows additionally supplies "refreshRate" and "pseudoDisplay".
@@ -167,17 +167,17 @@ interface nsIGfxInfo : nsISupports
    * otherwise it will be empty.
    */
   long getFeatureStatus(in long aFeature, [optional] out ACString aFailureId);
 
   /*
    * Ask about a feature, return the minimum driver version required for it if its status is
    * FEATURE_BLOCKED_DRIVER_VERSION, otherwise return an empty string.
    */
-  DOMString getFeatureSuggestedDriverVersion(in long aFeature);
+  AString getFeatureSuggestedDriverVersion(in long aFeature);
 
   // only useful on X11
   [noscript, notxpcom] void GetData();
 
   [implicit_jscontext]
   jsval getInfo();
 
   // Return an object describing all features that have been configured:
--- a/widget/nsIGfxInfoDebug.idl
+++ b/widget/nsIGfxInfoDebug.idl
@@ -5,15 +5,15 @@
 
 #include "nsISupports.idl"
 
 /* NOTE: this interface is only implemented in debug builds */
 
 [scriptable, uuid(ca7b0bc7-c67c-4b79-8270-ed7ba002af08)]
 interface nsIGfxInfoDebug : nsISupports
 {
-  void spoofVendorID(in DOMString aVendorID);
-  void spoofDeviceID(in DOMString aDeviceID);
+  void spoofVendorID(in AString aVendorID);
+  void spoofDeviceID(in AString aDeviceID);
   
-  void spoofDriverVersion(in DOMString aDriverVersion);
+  void spoofDriverVersion(in AString aDriverVersion);
 
   void spoofOSVersion(in unsigned long aVersion);
 };
--- a/widget/nsITaskbarPreview.idl
+++ b/widget/nsITaskbarPreview.idl
@@ -36,17 +36,17 @@ interface nsITaskbarPreview : nsISupport
    */
   attribute nsITaskbarPreviewController controller;
 
   /**
    * The tooltip displayed above the preview when the user hovers over it
    *
    * Default: an empty string
    */
-  attribute DOMString tooltip;
+  attribute AString tooltip;
 
   /**
    * Whether or not the preview is visible.
    *
    * Changing this option is expensive for tab previews since toggling this
    * option will destroy/create the proxy window and its registration with the
    * taskbar. If any step of that fails, an exception will be thrown.
    *
--- a/widget/nsITaskbarPreviewButton.idl
+++ b/widget/nsITaskbarPreviewButton.idl
@@ -17,17 +17,17 @@ interface imgIContainer;
 [scriptable, uuid(CED8842D-FE37-4767-9A8E-FDFA56510C75)]
 interface nsITaskbarPreviewButton : nsISupports
 {
   /**
    * The button's tooltip.
    *
    * Default: an empty string
    */
-  attribute DOMString tooltip;
+  attribute AString tooltip;
 
   /**
    * True if the array of previews should be dismissed when this button is clicked.
    *
    * Default: false
    */
   attribute boolean dismissOnClick;
 
--- a/widget/nsITaskbarTabPreview.idl
+++ b/widget/nsITaskbarTabPreview.idl
@@ -23,17 +23,17 @@ interface imgIContainer;
 [scriptable, uuid(11E4C8BD-5C2D-4E1A-A9A1-79DD5B0FE544)]
 interface nsITaskbarTabPreview : nsITaskbarPreview
 {
   /**
    * The title displayed above the thumbnail
    *
    * Default: an empty string
    */
-  attribute DOMString title;
+  attribute AString title;
 
   /**
    * The icon displayed next to the title in the preview
    *
    * Default: null
    */
   attribute imgIContainer icon;
 
--- a/xpcom/system/nsIXULRuntime.idl
+++ b/xpcom/system/nsIXULRuntime.idl
@@ -93,17 +93,17 @@ interface nsIXULRuntime : nsISupports
    * A globally unique and non-recycled ID of the caller's process.
    */
   readonly attribute uint64_t uniqueProcessID;
 
   /**
    * The type of remote content process we're running in.
    * null if we're in the parent/chrome process.
    */
-  readonly attribute DOMString remoteType;
+  readonly attribute AString remoteType;
 
   /**
    * If true, browser tabs may be opened by default in a different process
    * from the main browser UI.
    */
   readonly attribute boolean browserTabsRemoteAutostart;
 
   /**
@@ -129,17 +129,17 @@ interface nsIXULRuntime : nsISupports
   /**
    * If true, the AccessibleHandler dll is used.
    */
   readonly attribute boolean accessibleHandlerUsed;
 
   /**
    * Executable of Windows service that activated accessibility.
    */
-  readonly attribute DOMString accessibilityInstantiator;
+  readonly attribute AString accessibilityInstantiator;
 
   /**
    * Temporary, do not use. Indicates if an incompat version of JAWS
    * screen reader software is loaded in our process space.
    */
   readonly attribute boolean shouldBlockIncompatJaws;
 
   /**