Bug 1284455 - Remove the Web Activities API r?gerard-majax draft
authorFabrice Desré <fabrice@mozilla.com>
Wed, 20 Apr 2016 19:02:44 +0200
changeset 384477 32ed7528bcf06b954c01520c4f930445fffbd224
parent 384476 95ffbc4ff63584631c408e8d9912961fcf68bb09
child 384478 5d2feb525db886f091aed28e1416ace1587510a5
push id22272
push userbmo:lissyx+mozillians@lissyx.dyndns.org
push dateWed, 06 Jul 2016 10:08:23 +0000
reviewersgerard-majax
bugs1284455
milestone50.0a1
Bug 1284455 - Remove the Web Activities API r?gerard-majax MozReview-Commit-ID: 5SNGsRU4m9V
b2g/chrome/content/shell.js
b2g/components/ActivitiesGlue.js
b2g/components/B2GComponents.manifest
b2g/components/moz.build
b2g/installer/package-manifest.in
browser/confvars.sh
browser/installer/package-manifest.in
dom/activities/Activities.manifest
dom/activities/ActivitiesService.jsm
dom/activities/ActivitiesServiceFilter.jsm
dom/activities/Activity.cpp
dom/activities/Activity.h
dom/activities/ActivityMessageConfigurator.js
dom/activities/ActivityProxy.js
dom/activities/ActivityRequestHandler.js
dom/activities/ActivityWrapper.js
dom/activities/interfaces/moz.build
dom/activities/interfaces/nsIActivityProxy.idl
dom/activities/interfaces/nsIActivityUIGlue.idl
dom/activities/moz.build
dom/activities/tests/mochi/common.js
dom/activities/tests/mochi/manifest.webapp
dom/activities/tests/mochi/manifest.webapp^headers^
dom/activities/tests/mochi/mochitest.ini
dom/activities/tests/mochi/system.webapp
dom/activities/tests/mochi/system.webapp^headers^
dom/activities/tests/mochi/test_dev_mode_activity.html
dom/activities/tests/mochi/test_same_name_multiple_filters.html
dom/activities/tests/unit/test_activityFilters.js
dom/activities/tests/unit/xpcshell.ini
dom/apps/Webapps.jsm
dom/bindings/Bindings.conf
dom/moz.build
dom/webidl/ActivityRequestHandler.webidl
dom/webidl/MozActivity.webidl
dom/webidl/moz.build
old-configure.in
--- a/b2g/chrome/content/shell.js
+++ b/b2g/chrome/content/shell.js
@@ -3,17 +3,16 @@
 /* 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/. */
 
 window.performance.mark('gecko-shell-loadstart');
 
 Cu.import('resource://gre/modules/ContactService.jsm');
 Cu.import('resource://gre/modules/AlarmService.jsm');
-Cu.import('resource://gre/modules/ActivitiesService.jsm');
 Cu.import('resource://gre/modules/NotificationDB.jsm');
 Cu.import('resource://gre/modules/Payment.jsm');
 Cu.import("resource://gre/modules/AppsUtils.jsm");
 Cu.import('resource://gre/modules/UserAgentOverrides.jsm');
 Cu.import('resource://gre/modules/Keyboard.jsm');
 Cu.import('resource://gre/modules/ErrorPage.jsm');
 Cu.import('resource://gre/modules/AlertsHelper.jsm');
 Cu.import('resource://gre/modules/SystemUpdateService.jsm');
deleted file mode 100644
--- a/b2g/components/ActivitiesGlue.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict"
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-XPCOMUtils.defineLazyModuleGetter(this, "SystemAppProxy",
-                                  "resource://gre/modules/SystemAppProxy.jsm");
-
-function ActivitiesDialog() {
-  this._id = 0;
-
-  this.activities = [];
-}
-
-ActivitiesDialog.prototype = {
-  run: function ap_run() {
-    let id = "activity-choice" + this._id++;
-    let activity = this.activities.shift();
-
-    let choices = [];
-    activity.list.forEach(function(item) {
-      choices.push({ manifest: item.manifest, icon: item.icon });
-    });
-
-
-    // Keep up the frond-end of an activity choice. The messages contains
-    // a list of {names, icons} for applications able to handle this particular
-    // activity. The front-end should display a UI to pick one.
-    let detail = {
-      type: "activity-choice",
-      id: id,
-      name: activity.name,
-      choices: choices
-    };
-
-    if (activity.type) {
-      detail.activityType = activity.type;
-    }
-
-    // Listen the resulting choice from the front-end. If there is no choice,
-    // let's return -1, which means the user has cancelled the dialog.
-    SystemAppProxy.addEventListener("mozContentEvent", function act_getChoice(evt) {
-      if (evt.detail.id != id)
-        return;
-
-      SystemAppProxy.removeEventListener("mozContentEvent", act_getChoice);
-      activity.callback.handleEvent(Ci.nsIActivityUIGlueCallback.WEBAPPS_ACTIVITY,
-                                    evt.detail.value !== undefined
-                                      ? evt.detail.value
-                                      : -1);
-    });
-
-    SystemAppProxy.dispatchEvent(detail);
-  },
-
-  chooseActivity: function ap_chooseActivity(aOptions, aActivities, aCallback) {
-    // B2G does not have an alternate activity system, make no choice and return.
-    if (aActivities.length === 0) {
-      aCallback.handleEvent(Ci.nsIActivityUIGlueCallback.WEBAPPS_ACTIVITY, -1);
-      return;
-    }
-
-    let activity = {
-      name: aOptions.name,
-      list: aActivities,
-      callback: aCallback
-    };
-
-    if (aOptions.data && aOptions.data.type) {
-      activity.type = aOptions.data.type;
-    }
-
-    this.activities.push(activity);
-    Services.tm.currentThread.dispatch(this, Ci.nsIEventTarget.DISPATCH_NORMAL);
-  },
-
-  classID: Components.ID("{3a54788b-48cc-4ab4-93d6-0d6a8ef74f8e}"),
-
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsIActivityUIGlue, Ci.nsIRunnable])
-}
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([ActivitiesDialog]);
-
--- a/b2g/components/B2GComponents.manifest
+++ b/b2g/components/B2GComponents.manifest
@@ -18,20 +18,16 @@ category system-update-provider MozillaP
 
 #ifdef MOZ_B2G
 # DirectoryProvider.js
 component {9181eb7c-6f87-11e1-90b1-4f59d80dd2e5} DirectoryProvider.js
 contract @mozilla.org/b2g/directory-provider;1 {9181eb7c-6f87-11e1-90b1-4f59d80dd2e5}
 category xpcom-directory-providers b2g-directory-provider @mozilla.org/b2g/directory-provider;1
 #endif
 
-# ActivitiesGlue.js
-component {3a54788b-48cc-4ab4-93d6-0d6a8ef74f8e} ActivitiesGlue.js
-contract @mozilla.org/dom/activities/ui-glue;1 {3a54788b-48cc-4ab4-93d6-0d6a8ef74f8e}
-
 # SystemMessageGlue.js
 component {2846f034-e614-11e3-93cd-74d02b97e723} SystemMessageGlue.js
 contract @mozilla.org/dom/messages/system-message-glue;1 {2846f034-e614-11e3-93cd-74d02b97e723}
 
 # ProcessGlobal.js
 component {1a94c87a-5ece-4d11-91e1-d29c29f21b28} ProcessGlobal.js
 contract @mozilla.org/b2g-process-global;1 {1a94c87a-5ece-4d11-91e1-d29c29f21b28}
 category app-startup ProcessGlobal service,@mozilla.org/b2g-process-global;1
--- a/b2g/components/moz.build
+++ b/b2g/components/moz.build
@@ -2,17 +2,16 @@
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['test']
 
 EXTRA_COMPONENTS += [
-    'ActivitiesGlue.js',
     'AlertsService.js',
     'B2GAboutRedirector.js',
     'B2GAppMigrator.js',
     'B2GPresentationDevicePrompt.js',
     'BootstrapCommandLine.js',
     'ContentPermissionPrompt.js',
     'FilePicker.js',
     'FxAccountsUIGlue.js',
--- a/b2g/installer/package-manifest.in
+++ b/b2g/installer/package-manifest.in
@@ -619,17 +619,16 @@
 
 @RESPATH@/components/SystemMessageInternal.js
 @RESPATH@/components/SystemMessageManager.js
 @RESPATH@/components/SystemMessageCache.js
 @RESPATH@/components/SystemMessageManager.manifest
 @RESPATH@/components/HCIEventTransactionSystemMessage.manifest
 @RESPATH@/components/HCIEventTransactionSystemMessageConfigurator.js
 
-@RESPATH@/components/Activities.manifest
 @RESPATH@/components/ActivityProxy.js
 @RESPATH@/components/ActivityRequestHandler.js
 @RESPATH@/components/ActivityWrapper.js
 @RESPATH@/components/ActivityMessageConfigurator.js
 
 @RESPATH@/components/Payment.js
 @RESPATH@/components/PaymentFlowInfo.js
 @RESPATH@/components/PaymentProvider.js
@@ -869,17 +868,16 @@ bin/libfreebl_32int64_3.so
 #endif
 @RESPATH@/components/AlertsService.js
 @RESPATH@/components/ContentPermissionPrompt.js
 #ifdef MOZ_UPDATER
 @RESPATH@/components/UpdatePrompt.js
 #endif
 @RESPATH@/components/WebappsUpdateTimer.js
 @RESPATH@/components/DirectoryProvider.js
-@RESPATH@/components/ActivitiesGlue.js
 @RESPATH@/components/ProcessGlobal.js
 @RESPATH@/components/OMAContentHandler.js
 @RESPATH@/components/PaymentGlue.js
 @RESPATH@/components/PaymentProviderStrategy.js
 @RESPATH@/components/RecoveryService.js
 @RESPATH@/components/MailtoProtocolHandler.js
 @RESPATH@/components/SmsProtocolHandler.js
 @RESPATH@/components/TelProtocolHandler.js
--- a/browser/confvars.sh
+++ b/browser/confvars.sh
@@ -51,18 +51,16 @@ MOZ_APP_ID={ec8030f7-c20a-464f-9b0e-13a3
 ACCEPTED_MAR_CHANNEL_IDS=firefox-mozilla-central
 # The MAR_CHANNEL_ID must not contain the following 3 characters: ",\t "
 MAR_CHANNEL_ID=firefox-mozilla-central
 MOZ_PROFILE_MIGRATOR=1
 MOZ_APP_STATIC_INI=1
 MOZ_WEBGL_CONFORMANT=1
 # Enable navigator.mozPay
 MOZ_PAY=1
-# Enable activities. These are used for FxOS developers currently.
-MOZ_ACTIVITIES=1
 MOZ_JSDOWNLOADS=1
 MOZ_RUST_MP4PARSE=1
 
 # Enable checking that add-ons are signed by the trusted root
 MOZ_ADDON_SIGNING=1
 
 # Include the DevTools client, not just the server (which is the default)
 MOZ_DEVTOOLS=all
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -170,20 +170,16 @@
 #ifdef MOZ_WEBRTC
 @RESPATH@/components/content_webrtc.xpt
 #endif
 @RESPATH@/components/content_xslt.xpt
 @RESPATH@/components/cookie.xpt
 @RESPATH@/components/directory.xpt
 @RESPATH@/components/docshell.xpt
 @RESPATH@/components/dom.xpt
-#ifdef MOZ_ACTIVITIES
-@RESPATH@/components/dom_activities.xpt
-@RESPATH@/components/dom_messages.xpt
-#endif
 @RESPATH@/components/dom_apps.xpt
 @RESPATH@/components/dom_newapps.xpt
 @RESPATH@/components/dom_base.xpt
 @RESPATH@/components/dom_system.xpt
 #ifdef MOZ_B2G_BT
 @RESPATH@/components/dom_bluetooth.xpt
 #endif
 @RESPATH@/components/dom_canvas.xpt
@@ -532,29 +528,21 @@
 @RESPATH@/components/RemoteWebNavigation.js
 
 @RESPATH@/components/SlowScriptDebug.manifest
 @RESPATH@/components/SlowScriptDebug.js
 
 @RESPATH@/components/TVSimulatorService.js
 @RESPATH@/components/TVSimulatorService.manifest
 
-#ifdef MOZ_ACTIVITIES
 @RESPATH@/components/SystemMessageCache.js
 @RESPATH@/components/SystemMessageInternal.js
 @RESPATH@/components/SystemMessageManager.js
 @RESPATH@/components/SystemMessageManager.manifest
 
-@RESPATH@/components/Activities.manifest
-@RESPATH@/components/ActivityProxy.js
-@RESPATH@/components/ActivityRequestHandler.js
-@RESPATH@/components/ActivityWrapper.js
-@RESPATH@/components/ActivityMessageConfigurator.js
-#endif
-
 @RESPATH@/components/Payment.js
 @RESPATH@/components/PaymentFlowInfo.js
 @RESPATH@/components/Payment.manifest
 
 #ifdef MOZ_WEBRTC
 @RESPATH@/components/PeerConnection.js
 @RESPATH@/components/PeerConnection.manifest
 #endif
deleted file mode 100644
--- a/dom/activities/Activities.manifest
+++ /dev/null
@@ -1,11 +0,0 @@
-component {ba9bd5cb-76a0-4ecf-a7b3-d2f7c43c5949} ActivityProxy.js
-contract @mozilla.org/dom/activities/proxy;1 {ba9bd5cb-76a0-4ecf-a7b3-d2f7c43c5949}
-
-component {5430d6f9-32d6-4924-ba39-6b6d1b093cd6} ActivityWrapper.js
-contract @mozilla.org/dom/system-messages/wrapper/activity;1 {5430d6f9-32d6-4924-ba39-6b6d1b093cd6}
-
-component {d2296daa-c406-4c5e-b698-e5f2c1715798} ActivityMessageConfigurator.js
-contract @mozilla.org/dom/system-messages/configurator/activity;1 {d2296daa-c406-4c5e-b698-e5f2c1715798}
-
-component {9326952a-dbe3-4d81-a51f-d9c160d96d6b} ActivityRequestHandler.js
-contract @mozilla.org/dom/activities/request-handler;1 {9326952a-dbe3-4d81-a51f-d9c160d96d6b}
deleted file mode 100644
--- a/dom/activities/ActivitiesService.jsm
+++ /dev/null
@@ -1,493 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict"
-
-const Cu = Components.utils;
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/IndexedDBHelper.jsm");
-Cu.import("resource://gre/modules/AppsUtils.jsm");
-Cu.import("resource://gre/modules/AppConstants.jsm");
-
-XPCOMUtils.defineLazyModuleGetter(this, "DOMApplicationRegistry",
-  "resource://gre/modules/Webapps.jsm");
-
-XPCOMUtils.defineLazyModuleGetter(this, "ActivitiesServiceFilter",
-  "resource://gre/modules/ActivitiesServiceFilter.jsm");
-
-XPCOMUtils.defineLazyServiceGetter(this, "ppmm",
-                                   "@mozilla.org/parentprocessmessagemanager;1",
-                                   "nsIMessageBroadcaster");
-
-XPCOMUtils.defineLazyServiceGetter(this, "NetUtil",
-                                   "@mozilla.org/network/util;1",
-                                   "nsINetUtil");
-
-this.EXPORTED_SYMBOLS = [];
-
-function debug(aMsg) {
-  //dump("-- ActivitiesService.jsm " + Date.now() + " " + aMsg + "\n");
-}
-
-const DB_NAME    = "activities";
-const DB_VERSION = 2;
-const STORE_NAME = "activities";
-
-function ActivitiesDb() {
-
-}
-
-ActivitiesDb.prototype = {
-  __proto__: IndexedDBHelper.prototype,
-
-  init: function actdb_init() {
-    this.initDBHelper(DB_NAME, DB_VERSION, [STORE_NAME]);
-  },
-
-  /**
-   * Create the initial database schema.
-   *
-   * The schema of records stored is as follows:
-   *
-   * {
-   *  id:                  String
-   *  manifest:            String
-   *  name:                String
-   *  icon:                String
-   *  description:         jsval
-   * }
-   */
-  upgradeSchema: function actdb_upgradeSchema(aTransaction, aDb, aOldVersion, aNewVersion) {
-    debug("Upgrade schema " + aOldVersion + " -> " + aNewVersion);
-
-    let self = this;
-
-    /**
-     * WARNING!! Before upgrading the Activities DB take into account that an
-     * OTA unregisters all the activities and reinstalls them during the first
-     * run process. Check Bug 1193503.
-     */
-
-    function upgrade(currentVersion) {
-      let next = upgrade.bind(self, currentVersion + 1);
-      switch (currentVersion) {
-        case 0:
-          self.createSchema(aDb, next);
-          break;
-      }
-    }
-
-    upgrade(aOldVersion);
-  },
-
-  createSchema: function(aDb, aNext) {
-    let objectStore = aDb.createObjectStore(STORE_NAME, { keyPath: "id" });
-
-    // indexes
-    objectStore.createIndex("name", "name", { unique: false });
-    objectStore.createIndex("manifest", "manifest", { unique: false });
-
-    debug("Created object stores and indexes");
-
-    aNext();
-  },
-
-  // unique ids made of (uri, action)
-  createId: function actdb_createId(aObject) {
-    let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
-                      .createInstance(Ci.nsIScriptableUnicodeConverter);
-    converter.charset = "UTF-8";
-
-    let hasher = Cc["@mozilla.org/security/hash;1"]
-                   .createInstance(Ci.nsICryptoHash);
-    hasher.init(hasher.SHA1);
-
-    // add uri and action to the hash
-    ["manifest", "name", "description"].forEach(function(aProp) {
-      if (!aObject[aProp]) {
-        return;
-      }
-
-      let property = aObject[aProp];
-      if (aProp == "description") {
-        property = JSON.stringify(aObject[aProp]);
-      }
-
-      let data = converter.convertToByteArray(property, {});
-      hasher.update(data, data.length);
-    });
-
-    return hasher.finish(true);
-  },
-
-  // Add all the activities carried in the |aObjects| array.
-  add: function actdb_add(aObjects, aSuccess, aError) {
-    this.newTxn("readwrite", STORE_NAME, function (txn, store) {
-      aObjects.forEach(function (aObject) {
-        let object = {
-          manifest: aObject.manifest,
-          name: aObject.name,
-          icon: aObject.icon || "",
-          description: aObject.description
-        };
-        object.id = this.createId(object);
-        debug("Going to add " + JSON.stringify(object));
-        store.put(object);
-      }, this);
-    }.bind(this), aSuccess, aError);
-  },
-
-  // Remove all the activities carried in the |aObjects| array.
-  remove: function actdb_remove(aObjects) {
-    this.newTxn("readwrite", STORE_NAME, (txn, store) => {
-      aObjects.forEach((aObject) => {
-        let object = {
-          manifest: aObject.manifest,
-          name: aObject.name,
-          description: aObject.description
-        };
-        debug("Going to remove " + JSON.stringify(object));
-        store.delete(this.createId(object));
-      });
-    }, function() {}, function() {});
-  },
-
-  // Remove all activities associated with the given |aManifest| URL.
-  removeAll: function actdb_removeAll(aManifest) {
-    this.newTxn("readwrite", STORE_NAME, function (txn, store) {
-      let index = store.index("manifest");
-      let request = index.mozGetAll(aManifest);
-      request.onsuccess = function manifestActivities(aEvent) {
-        aEvent.target.result.forEach(function(result) {
-          debug('Removing activity: ' + JSON.stringify(result));
-          store.delete(result.id);
-        });
-      };
-    });
-  },
-
-  find: function actdb_find(aObject, aSuccess, aError, aMatch) {
-    debug("Looking for " + aObject.options.name);
-
-    this.newTxn("readonly", STORE_NAME, function (txn, store) {
-      let index = store.index("name");
-      let request = index.mozGetAll(aObject.options.name);
-      request.onsuccess = function findSuccess(aEvent) {
-        debug("Request successful. Record count: " + aEvent.target.result.length);
-        if (!txn.result) {
-          txn.result = {
-            name: aObject.options.name,
-            options: []
-          };
-        }
-
-        aEvent.target.result.forEach(function(result) {
-          if (!aMatch(result))
-            return;
-
-          txn.result.options.push({
-            manifest: result.manifest,
-            icon: result.icon,
-            description: result.description
-          });
-        });
-      }
-    }.bind(this), aSuccess, aError);
-  }
-}
-
-var Activities = {
-  messages: [
-    // ActivityProxy.js
-    "Activity:Start",
-
-    // ActivityWrapper.js
-    "Activity:Ready",
-
-    // ActivityRequestHandler.js
-    "Activity:PostResult",
-    "Activity:PostError",
-
-    "Activities:Register",
-    "Activities:Unregister",
-    "Activities:UnregisterAll",
-    "Activities:GetContentTypes",
-
-    "child-process-shutdown"
-  ],
-
-  init: function activities_init() {
-    this.messages.forEach(function(msgName) {
-      ppmm.addMessageListener(msgName, this);
-    }, this);
-
-    Services.obs.addObserver(this, "xpcom-shutdown", false);
-
-    this.db = new ActivitiesDb();
-    this.db.init();
-    this.callers = {};
-  },
-
-  observe: function activities_observe(aSubject, aTopic, aData) {
-    this.messages.forEach(function(msgName) {
-      ppmm.removeMessageListener(msgName, this);
-    }, this);
-    ppmm = null;
-
-    if (this.db) {
-      this.db.close();
-      this.db = null;
-    }
-
-    Services.obs.removeObserver(this, "xpcom-shutdown");
-  },
-
-  /**
-    * Starts an activity by doing:
-    * - finds a list of matching activities.
-    * - calls the UI glue to get the user choice.
-    * - fire an system message of type "activity" to this app, sending the
-    *   activity data as a payload.
-    */
-  startActivity: function activities_startActivity(aMsg) {
-    debug("StartActivity: " + JSON.stringify(aMsg));
-
-    let self = this;
-    let successCb = function successCb(aResults) {
-      debug(JSON.stringify(aResults));
-
-      function getActivityChoice(aResultType, aResult) {
-        switch(aResultType) {
-          case Ci.nsIActivityUIGlueCallback.NATIVE_ACTIVITY: {
-            self.callers[aMsg.id].mm.sendAsyncMessage("Activity:FireSuccess", {
-              "id": aMsg.id,
-              "result": aResult
-            });
-            break;
-          }
-          case Ci.nsIActivityUIGlueCallback.WEBAPPS_ACTIVITY: {
-            debug("Activity choice: " + aResult);
-
-            // We have no matching activity registered, let's fire an error.
-            // Don't do this check until we have passed to UIGlue so the glue
-            // can choose to launch its own activity if needed.
-            if (aResults.options.length === 0) {
-                self.trySendAndCleanup(aMsg.id, "Activity:FireError", {
-                  "id": aMsg.id,
-                  "error": "NO_PROVIDER"
-                });
-              return;
-            }
-
-            // The user has cancelled the choice, fire an error.
-            if (aResult === -1) {
-              self.trySendAndCleanup(aMsg.id, "Activity:FireError", {
-                "id": aMsg.id,
-                "error": "ActivityCanceled"
-              });
-              return;
-            }
-
-            let sysmm = Cc["@mozilla.org/system-message-internal;1"]
-                          .getService(Ci.nsISystemMessagesInternal);
-            if (!sysmm) {
-              // System message is not present, what should we do?
-              self.removeCaller(aMsg.id);
-              return;
-            }
-
-            debug("Sending system message...");
-            let result = aResults.options[aResult];
-            sysmm.sendMessage("activity", {
-                "id": aMsg.id,
-                "payload": aMsg.options,
-                "target": result.description
-              },
-              Services.io.newURI(result.description.href, null, null),
-              Services.io.newURI(result.manifest, null, null),
-              {
-                "manifestURL": self.callers[aMsg.id].manifestURL,
-                "pageURL": self.callers[aMsg.id].pageURL
-              });
-
-            if (!result.description.returnValue) {
-              // No need to notify observers, since we don't want the caller
-              // to be raised on the foreground that quick.
-              self.trySendAndCleanup(aMsg.id, "Activity:FireSuccess", {
-                "id": aMsg.id,
-                "result": null
-              });
-            }
-            break;
-          }
-        }
-      };
-
-      let caller = Activities.callers[aMsg.id];
-      if (aMsg.getFilterResults === true &&
-          caller.mm.assertAppHasStatus(Ci.nsIPrincipal.APP_STATUS_CERTIFIED)) {
-        // Certified apps can ask to just get the picker data.
-
-        // We want to return the manifest url, icon url and app name.
-        // The app name needs to be picked up from the localized manifest.
-        let reg = DOMApplicationRegistry;
-        let ids = aResults.options.map((aItem) => {
-          return { id: reg._appIdForManifestURL(aItem.manifest) }
-        });
-
-        reg._readManifests(ids).then((aManifests) => {
-          let results = [];
-          aManifests.forEach((aManifest, i) => {
-            let manifestURL = aResults.options[i].manifest;
-            // Not passing the origin is fine here since we only need
-            // helper.name which doesn't rely on url resolution.
-            let helper =
-              new ManifestHelper(aManifest.manifest, manifestURL, manifestURL);
-            results.push({
-              manifestURL: manifestURL,
-              iconURL: aResults.options[i].icon,
-              appName: helper.name
-            });
-          });
-
-          // Now fire success with the array of choices.
-          caller.mm.sendAsyncMessage("Activity:FireSuccess",
-            {
-              "id": aMsg.id,
-              "result": results
-            });
-          self.removeCaller(aMsg.id);
-        });
-      } else {
-        let glue = Cc["@mozilla.org/dom/activities/ui-glue;1"]
-                     .createInstance(Ci.nsIActivityUIGlue);
-        glue.chooseActivity(aMsg.options, aResults.options, getActivityChoice);
-      }
-    };
-
-    let errorCb = function errorCb(aError) {
-      // Something unexpected happened. Should we send an error back?
-      debug("Error in startActivity: " + aError + "\n");
-    };
-
-    let matchFunc = function matchFunc(aResult) {
-      // If the activity is in the developer mode activity list, only let the
-      // system app be a provider.
-      let isSystemApp = false;
-      let isDevModeActivity = false;
-      try {
-        isSystemApp =
-          aResult.manifest == Services.prefs.getCharPref("b2g.system_manifest_url");
-        isDevModeActivity =
-          Services.prefs.getCharPref("dom.activities.developer_mode_only")
-                        .split(",").indexOf(aMsg.options.name) !== -1;
-      } catch(e)  {}
-
-      if (isDevModeActivity && !isSystemApp) {
-        return false;
-      }
-
-      return ActivitiesServiceFilter.match(aMsg.options.data,
-                                           aResult.description.filters);
-    };
-
-    this.db.find(aMsg, successCb, errorCb, matchFunc);
-  },
-
-  trySendAndCleanup: function activities_trySendAndCleanup(aId, aName, aPayload) {
-    try {
-      this.callers[aId].mm.sendAsyncMessage(aName, aPayload);
-    } finally {
-      this.removeCaller(aId);
-    }
-  },
-
-  receiveMessage: function activities_receiveMessage(aMessage) {
-    let mm = aMessage.target;
-    let msg = aMessage.json;
-
-    let caller;
-    let obsData;
-
-    if (aMessage.name == "Activity:PostResult" ||
-        aMessage.name == "Activity:PostError" ||
-        aMessage.name == "Activity:Ready") {
-      caller = this.callers[msg.id];
-      if (!caller) {
-        debug("!! caller is null for msg.id=" + msg.id);
-        return;
-      }
-      obsData = JSON.stringify({ manifestURL: caller.manifestURL,
-                                 pageURL: caller.pageURL,
-                                 success: aMessage.name == "Activity:PostResult" });
-    }
-
-    switch(aMessage.name) {
-      case "Activity:Start":
-        Services.obs.notifyObservers(null, "activity-opened", msg.childID);
-        this.callers[msg.id] = { mm: mm,
-                                 manifestURL: msg.manifestURL,
-                                 childID: msg.childID,
-                                 pageURL: msg.pageURL };
-        this.startActivity(msg);
-        break;
-
-      case "Activity:Ready":
-        caller.childMM = mm;
-        break;
-
-      case "Activity:PostResult":
-        this.trySendAndCleanup(msg.id, "Activity:FireSuccess", msg);
-        break;
-      case "Activity:PostError":
-        this.trySendAndCleanup(msg.id, "Activity:FireError", msg);
-        break;
-
-      case "Activities:Register":
-        this.db.add(msg,
-          function onSuccess(aEvent) {
-            debug("Activities:Register:OK");
-            Services.obs.notifyObservers(null, "new-activity-registered-success", null);
-            mm.sendAsyncMessage("Activities:Register:OK", null);
-          },
-          function onError(aEvent) {
-            msg.error = "REGISTER_ERROR";
-            debug("Activities:Register:KO");
-            Services.obs.notifyObservers(null, "new-activity-registered-failure", null);
-            mm.sendAsyncMessage("Activities:Register:KO", msg);
-          });
-        break;
-      case "Activities:Unregister":
-        this.db.remove(msg);
-        break;
-      case "Activities:UnregisterAll":
-        this.db.removeAll(msg);
-        break;
-      case "child-process-shutdown":
-        for (let id in this.callers) {
-          if (this.callers[id].childMM == mm) {
-            this.trySendAndCleanup(id, "Activity:FireError", {
-              "id": id,
-              "error": "ActivityCanceled"
-            });
-            break;
-          }
-        }
-        break;
-    }
-  },
-
-  removeCaller: function activities_removeCaller(id) {
-    Services.obs.notifyObservers(null, "activity-closed",
-                                 this.callers[id].childID);
-    delete this.callers[id];
-  }
-
-}
-
-Activities.init();
deleted file mode 100644
--- a/dom/activities/ActivitiesServiceFilter.jsm
+++ /dev/null
@@ -1,129 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict"
-
-this.EXPORTED_SYMBOLS = ['ActivitiesServiceFilter'];
-
-this.ActivitiesServiceFilter = {
-  match: function(aValues, aFilters) {
-
-    function matchValue(aValue, aFilter, aFilterObj) {
-      if (aFilter !== null) {
-        // Custom functions for the different types.
-        switch (typeof(aFilter)) {
-        case 'boolean':
-          return aValue === aFilter;
-
-        case 'number':
-          return Number(aValue) === aFilter;
-
-        case 'string':
-          return String(aValue) === aFilter;
-
-        default: // not supported
-          return false;
-        }
-      }
-
-      // Pattern.
-      if (('pattern' in aFilterObj)) {
-        var pattern = String(aFilterObj.pattern);
-
-        var patternFlags = '';
-        if (('patternFlags' in aFilterObj)) {
-          patternFlags = String(aFilterObj.patternFlags);
-        }
-
-        var re = new RegExp('^(?:' + pattern + ')$', patternFlags);
-        return re.test(aValue);
-      }
-
-      // Validation of the min/Max.
-      if (('min' in aFilterObj) || ('max' in aFilterObj)) {
-        // Min value.
-        if (('min' in aFilterObj) &&
-            aFilterObj.min > aValue) {
-          return false;
-        }
-
-        // Max value.
-        if (('max' in aFilterObj) &&
-            aFilterObj.max < aValue) {
-          return false;
-        }
-      }
-
-      return true;
-    }
-
-    // this function returns true if the value matches with the filter object
-    function matchObject(aValue, aFilterObj) {
-
-      // Let's consider anything an array.
-      let filters = ('value' in aFilterObj)
-                      ? (Array.isArray(aFilterObj.value)
-                          ? aFilterObj.value
-                          : [aFilterObj.value])
-                      : [ null ];
-      let values  = Array.isArray(aValue) ? aValue : [aValue];
-
-      for (var filterId = 0; filterId < filters.length; ++filterId) {
-        for (var valueId = 0; valueId < values.length; ++valueId) {
-          if (matchValue(values[valueId], filters[filterId], aFilterObj)) {
-            return true;
-          }
-        }
-      }
-
-      return false;
-    }
-
-    // Creation of a filter map useful to know what has been
-    // matched and what is not.
-    let filtersMap = {}
-    for (let filter in aFilters) {
-      // Convert this filter in an object if needed
-      let filterObj = aFilters[filter];
-
-      if (Array.isArray(filterObj) || typeof(filterObj) !== 'object') {
-        filterObj = {
-          required: false,
-          value: filterObj
-        }
-      }
-
-      filtersMap[filter] = { filter: filterObj,
-                             found:  false };
-    }
-
-    // For any incoming property.
-    for (let prop in aValues) {
-      // If this is unknown for the app, let's continue.
-      if (!(prop in filtersMap)) {
-        continue;
-      }
-
-      if (Array.isArray(aValues[prop]) && aValues[prop].length == 0) {
-        continue;
-      }
-
-      // Otherwise, let's check the value against the filter.
-      if (!matchObject(aValues[prop], filtersMap[prop].filter)) {
-        return false;
-      }
-
-      filtersMap[prop].found = true;
-    }
-
-    // Required filters:
-    for (let filter in filtersMap) {
-      if (filtersMap[filter].filter.required && !filtersMap[filter].found) {
-        return false;
-      }
-    }
-
-    return true;
-  }
-}
deleted file mode 100644
--- a/dom/activities/Activity.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "Activity.h"
-#include "mozilla/dom/ToJSValue.h"
-#include "mozilla/dom/ContentChild.h"
-#include "nsContentUtils.h"
-#include "nsDOMClassInfo.h"
-#include "nsIConsoleService.h"
-#include "nsIDocShell.h"
-#include "nsIDocument.h"
-
-using namespace mozilla::dom;
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(Activity)
-NS_INTERFACE_MAP_END_INHERITING(DOMRequest)
-
-NS_IMPL_ADDREF_INHERITED(Activity, DOMRequest)
-NS_IMPL_RELEASE_INHERITED(Activity, DOMRequest)
-
-NS_IMPL_CYCLE_COLLECTION_INHERITED(Activity, DOMRequest,
-                                   mProxy)
-
-NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(Activity, DOMRequest)
-NS_IMPL_CYCLE_COLLECTION_TRACE_END
-
-/* virtual */ JSObject*
-Activity::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
-{
-  return MozActivityBinding::Wrap(aCx, this, aGivenProto);
-}
-
-nsresult
-Activity::Initialize(nsPIDOMWindowInner* aWindow,
-                     JSContext* aCx,
-                     const ActivityOptions& aOptions)
-{
-  MOZ_ASSERT(aWindow);
-
-  nsCOMPtr<nsIDocument> document = aWindow->GetExtantDoc();
-
-  bool isActive;
-  aWindow->GetDocShell()->GetIsActive(&isActive);
-
-  if (!isActive &&
-      !nsContentUtils::IsChromeDoc(document)) {
-    nsCOMPtr<nsIDOMRequestService> rs =
-      do_GetService("@mozilla.org/dom/dom-request-service;1");
-    rs->FireErrorAsync(static_cast<DOMRequest*>(this),
-                       NS_LITERAL_STRING("NotUserInput"));
-
-    nsCOMPtr<nsIConsoleService> console(
-      do_GetService("@mozilla.org/consoleservice;1"));
-    NS_ENSURE_TRUE(console, NS_OK);
-
-    nsString message =
-      NS_LITERAL_STRING("Can only start activity from user input or chrome code");
-    console->LogStringMessage(message.get());
-
-    return NS_OK;
-  }
-
-  // Instantiate a JS proxy that will do the child <-> parent communication
-  // with the JS implementation of the backend.
-  nsresult rv;
-  mProxy = do_CreateInstance("@mozilla.org/dom/activities/proxy;1", &rv);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  // We're about the pass the dictionary to a JS-implemented component, so
-  // rehydrate it in a system scode so that security wrappers don't get in the
-  // way. See bug 1161748 comment 16.
-  bool ok;
-  JS::Rooted<JS::Value> optionsValue(aCx);
-  {
-    JSAutoCompartment ac(aCx, xpc::PrivilegedJunkScope());
-    ok = ToJSValue(aCx, aOptions, &optionsValue);
-    NS_ENSURE_TRUE(ok, NS_ERROR_FAILURE);
-  }
-  ok = JS_WrapValue(aCx, &optionsValue);
-  NS_ENSURE_TRUE(ok, NS_ERROR_FAILURE);
-
-  ContentChild *cpc = ContentChild::GetSingleton();
-  uint64_t childID = cpc ? cpc->GetID() : 0;
-
-  mProxy->StartActivity(static_cast<nsIDOMDOMRequest*>(this), optionsValue,
-                        aWindow, childID);
-  return NS_OK;
-}
-
-Activity::~Activity()
-{
-  if (mProxy) {
-    mProxy->Cleanup();
-  }
-}
-
-Activity::Activity(nsPIDOMWindowInner* aWindow)
-  : DOMRequest(aWindow)
-{
-}
-
deleted file mode 100644
--- a/dom/activities/Activity.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef mozilla_dom_activities_Activity_h
-#define mozilla_dom_activities_Activity_h
-
-#include "DOMRequest.h"
-#include "mozilla/dom/BindingDeclarations.h"
-#include "mozilla/dom/MozActivityBinding.h"
-#include "nsIActivityProxy.h"
-#include "mozilla/Preferences.h"
-#include "nsPIDOMWindow.h"
-
-namespace mozilla {
-namespace dom {
-
-class Activity : public DOMRequest
-{
-public:
-  NS_DECL_ISUPPORTS_INHERITED
-  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(Activity, DOMRequest)
-
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
-
-  static already_AddRefed<Activity>
-  Constructor(const GlobalObject& aOwner,
-              const ActivityOptions& aOptions,
-              ErrorResult& aRv)
-  {
-    nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aOwner.GetAsSupports());
-    if (!window) {
-      aRv.Throw(NS_ERROR_UNEXPECTED);
-      return nullptr;
-    }
-
-    RefPtr<Activity> activity = new Activity(window);
-    aRv = activity->Initialize(window, aOwner.Context(), aOptions);
-    return activity.forget();
-  }
-
-  explicit Activity(nsPIDOMWindowInner* aWindow);
-
-protected:
-  nsresult Initialize(nsPIDOMWindowInner* aWindow,
-                      JSContext* aCx,
-                      const ActivityOptions& aOptions);
-
-  nsCOMPtr<nsIActivityProxy> mProxy;
-
-  ~Activity();
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_activities_Activity_h
deleted file mode 100644
--- a/dom/activities/ActivityMessageConfigurator.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-
-function debug(aMsg) {
-  // dump("-- ActivityMessageConfigurator.js " + Date.now() + " : " + aMsg + "\n");
-}
-
-/**
-  * nsISystemMessagesConfigurator implementation.
-  */
-function ActivityMessageConfigurator() {
-  debug("ActivityMessageConfigurator");
-}
-
-ActivityMessageConfigurator.prototype = {
-  get mustShowRunningApp() {
-    debug("mustShowRunningApp returning true");
-    return true;
-  },
-
-  classID: Components.ID("{d2296daa-c406-4c5e-b698-e5f2c1715798}"),
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsISystemMessagesConfigurator])
-}
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([ActivityMessageConfigurator]);
deleted file mode 100644
--- a/dom/activities/ActivityProxy.js
+++ /dev/null
@@ -1,134 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
-                                   "@mozilla.org/childprocessmessagemanager;1",
-                                   "nsISyncMessageSender");
-
-function debug(aMsg) {
-  //dump("-- ActivityProxy " + Date.now() + " : " + aMsg + "\n");
-}
-
-/**
-  * nsIActivityProxy implementation
-  * We keep a reference to the C++ Activity object, and
-  * communicate with the Message Manager to know when to
-  * fire events on it.
-  */
-function ActivityProxy() {
-  debug("ActivityProxy");
-  this.activity = null;
-  let inParent = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime)
-                   .processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
-  debug("inParent: " + inParent);
-  Cu.import(inParent ? "resource://gre/modules/Webapps.jsm"
-                     : "resource://gre/modules/AppsServiceChild.jsm");
-}
-
-ActivityProxy.prototype = {
-  startActivity: function actProxy_startActivity(aActivity, aOptions, aWindow,
-                                                 aChildID) {
-    debug("startActivity");
-
-    this.window = aWindow;
-    this.activity = aActivity;
-    this.id = Cc["@mozilla.org/uuid-generator;1"]
-                .getService(Ci.nsIUUIDGenerator)
-                .generateUUID().toString();
-    // Retrieve the app's manifest url from the principal, so that we can
-    // later notify when the activity handler called postResult or postError
-    let principal = aWindow.document.nodePrincipal;
-    let appId = principal.appId;
-    let manifestURL = (appId != Ci.nsIScriptSecurityManager.NO_APP_ID &&
-                       appId != Ci.nsIScriptSecurityManager.UNKNOWN_APP_ID)
-                        ? DOMApplicationRegistry.getManifestURLByLocalId(appId)
-                        : null;
-
-    // Only let certified apps enumerate providers for this filter.
-    if (aOptions.getFilterResults === true &&
-        principal.appStatus != Ci.nsIPrincipal.APP_STATUS_CERTIFIED) {
-      Services.DOMRequest.fireErrorAsync(this.activity, "SecurityError");
-      Services.obs.notifyObservers(null, "Activity:Error", null);
-      return;
-    }
-
-    // Check the activities that are restricted to be used in dev mode.
-    let devMode = false;
-    let isDevModeActivity = false;
-    try {
-      devMode = Services.prefs.getBoolPref("dom.apps.developer_mode");
-      isDevModeActivity =
-        Services.prefs.getCharPref("dom.activities.developer_mode_only")
-                      .split(",").indexOf(aOptions.name) !== -1;
-
-    } catch(e) {}
-    if (isDevModeActivity && !devMode) {
-      Services.DOMRequest.fireErrorAsync(this.activity, "SecurityError");
-      Services.obs.notifyObservers(null, "Activity:Error", null);
-      return;
-    }
-
-    cpmm.addMessageListener("Activity:FireSuccess", this);
-    cpmm.addMessageListener("Activity:FireError", this);
-
-    cpmm.sendAsyncMessage("Activity:Start",
-      {
-        id: this.id,
-        options: {
-          name: aOptions.name,
-          data: aOptions.data
-        },
-        getFilterResults: aOptions.getFilterResults,
-        manifestURL: manifestURL,
-        pageURL: aWindow.document.location.href,
-        childID: aChildID });
-  },
-
-  receiveMessage: function actProxy_receiveMessage(aMessage) {
-    debug("Got message: " + aMessage.name);
-    let msg = aMessage.json;
-    if (msg.id != this.id)
-      return;
-    debug("msg=" + JSON.stringify(msg));
-
-    switch(aMessage.name) {
-      case "Activity:FireSuccess":
-        debug("FireSuccess");
-        Services.DOMRequest.fireSuccess(this.activity,
-                                        Cu.cloneInto(msg.result, this.window));
-        Services.obs.notifyObservers(null, "Activity:Success", null);
-        break;
-      case "Activity:FireError":
-        debug("FireError");
-        Services.DOMRequest.fireError(this.activity, msg.error);
-        Services.obs.notifyObservers(null, "Activity:Error", null);
-        break;
-    }
-    // We can only get one FireSuccess / FireError message, so cleanup as soon as possible.
-    this.cleanup();
-  },
-
-  cleanup: function actProxy_cleanup() {
-    debug("cleanup");
-    if (cpmm && !this.cleanedUp) {
-      cpmm.removeMessageListener("Activity:FireSuccess", this);
-      cpmm.removeMessageListener("Activity:FireError", this);
-    }
-    this.cleanedUp = true;
-  },
-
-  classID: Components.ID("{ba9bd5cb-76a0-4ecf-a7b3-d2f7c43c5949}"),
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsIActivityProxy])
-}
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([ActivityProxy]);
deleted file mode 100644
--- a/dom/activities/ActivityRequestHandler.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
-                                   "@mozilla.org/childprocessmessagemanager;1",
-                                   "nsISyncMessageSender");
-
-function debug(aMsg) {
-  //dump("-- ActivityRequestHandler.js " + Date.now() + " : " + aMsg + "\n");
-}
-
-/**
-  * nsIDOMMozActivityRequestHandler implementation.
-  */
-
-function ActivityRequestHandler() {
-  debug("ActivityRequestHandler");
-
-  // When a system message of type 'activity' is emitted, it forces the
-  // creation of an ActivityWrapper which in turns replace the default
-  // system message callback. The newly created wrapper then create an
-  // ActivityRequestHandler object.
-}
-
-ActivityRequestHandler.prototype = {
-  init: function arh_init(aWindow) {
-    this._window = aWindow;
-  },
-
-  __init: function arh___init(aId, aOptions, aReturnValue) {
-    this._id = aId;
-    this._options = aOptions;
-    this._returnValue = aReturnValue;
-  },
-
-  get source() {
-    // We need to clone this object because the this._options.data has
-    // the type any in WebIDL which will cause the binding layer to pass
-    // the value which is a COW unmodified to content.
-    return Cu.cloneInto(this._options, this._window);
-  },
-
-  postResult: function arh_postResult(aResult) {
-    if (this._returnValue) {
-      cpmm.sendAsyncMessage("Activity:PostResult", {
-        "id": this._id,
-        "result": aResult
-      });
-      Services.obs.notifyObservers(null, "activity-success", this._id);
-    } else {
-      Cu.reportError("postResult() can't be called when 'returnValue': 'true' isn't declared in manifest.webapp");
-      throw new Error("postResult() can't be called when 'returnValue': 'true' isn't declared in manifest.webapp");
-    }
-  },
-
-  postError: function arh_postError(aError) {
-    cpmm.sendAsyncMessage("Activity:PostError", {
-      "id": this._id,
-      "error": aError
-    });
-    Services.obs.notifyObservers(null, "activity-error", this._id);
-  },
-
-  classID: Components.ID("{9326952a-dbe3-4d81-a51f-d9c160d96d6b}"),
-
-  QueryInterface: XPCOMUtils.generateQI([
-    Ci.nsIDOMGlobalPropertyInitializer
-  ])
-}
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([ActivityRequestHandler]);
deleted file mode 100644
--- a/dom/activities/ActivityWrapper.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
-                                   "@mozilla.org/childprocessmessagemanager;1",
-                                   "nsISyncMessageSender");
-
-function debug(aMsg) {
-  //dump("-- ActivityWrapper.js " + Date.now() + " : " + aMsg + "\n");
-}
-
-/**
-  * nsISystemMessagesWrapper implementation. Will return a
-  * nsIDOMMozActivityRequestHandler
-  */
-function ActivityWrapper() {
-  debug("ActivityWrapper");
-}
-
-ActivityWrapper.prototype = {
-  wrapMessage: function wrapMessage(aMessage, aWindow) {
-    debug("Wrapping " + JSON.stringify(aMessage));
-
-    // This message is useful to communicate that the activity message has been
-    // properly received by the app. If the app will be killed, the
-    // ActivitiesService will be able to fire an error and complete the
-    // Activity workflow.
-    cpmm.sendAsyncMessage("Activity:Ready", { id: aMessage.id });
-
-    // Gecko should ignore |postResult| calls for WebActivities with no returnValue
-    // We need to pass returnValue to ActivityRequestHandler constructor to then properly
-    // decide if should call postResult or not
-    let handler = new aWindow.ActivityRequestHandler(aMessage.id, aMessage.payload, aMessage.target.returnValue);
-
-    // When the activity window is closed, fire an error to notify the activity
-    // caller of the situation.
-    // We don't need to check whether the activity itself already sent
-    // back something since ActivitiesService.jsm takes care of that.
-    let util = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
-                      .getInterface(Ci.nsIDOMWindowUtils);
-    let innerWindowID = util.currentInnerWindowID;
-
-    let observer = {
-      observe: function(aSubject, aTopic, aData) {
-
-        switch (aTopic) {
-          case 'inner-window-destroyed':
-            let wId = aSubject.QueryInterface(Ci.nsISupportsPRUint64).data;
-            if (wId == innerWindowID) {
-              debug("Closing activity window " + innerWindowID);
-              Services.obs.removeObserver(observer, "inner-window-destroyed");
-              cpmm.sendAsyncMessage("Activity:PostError",
-                                    { id: aMessage.id,
-                                      error: "ActivityCanceled"
-                                    });
-            }
-            break;
-          case 'activity-error':
-          case 'activity-success':
-            if (aData !== aMessage.id) {
-              return;
-            }
-            Services.obs.removeObserver(observer, "activity-error");
-            Services.obs.removeObserver(observer, "activity-success");
-            let docshell = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
-                                  .getInterface(Ci.nsIWebNavigation);
-            Services.obs.notifyObservers(docshell, "activity-done", aTopic);
-            break;
-        }
-      }
-    }
-
-    Services.obs.addObserver(observer, "activity-error", false);
-    Services.obs.addObserver(observer, "activity-success", false);
-    Services.obs.addObserver(observer, "inner-window-destroyed", false);
-    return handler;
-  },
-
-  classID: Components.ID("{5430d6f9-32d6-4924-ba39-6b6d1b093cd6}"),
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsISystemMessagesWrapper])
-}
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([ActivityWrapper]);
-
deleted file mode 100644
--- a/dom/activities/interfaces/moz.build
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-XPIDL_SOURCES += [
-    'nsIActivityProxy.idl',
-    'nsIActivityUIGlue.idl',
-]
-
-XPIDL_MODULE = 'dom_activities'
-
deleted file mode 100644
--- a/dom/activities/interfaces/nsIActivityProxy.idl
+++ /dev/null
@@ -1,20 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-interface mozIDOMWindow;
-
-/**
-  * Implemented by @mozilla.org/dom/activities/proxy;1
-  */
-[scriptable, uuid(87653623-d864-4b03-8874-96808b8cdb81)]
-interface nsIActivityProxy : nsISupports
-{
-    void startActivity(in nsISupports /* MozActivity */ activity,
-                       in jsval options,
-                       in mozIDOMWindow window,
-                       in unsigned long long childID);
-    void cleanup();
-};
deleted file mode 100644
--- a/dom/activities/interfaces/nsIActivityUIGlue.idl
+++ /dev/null
@@ -1,45 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-[scriptable, function, uuid(674b6e69-05f0-41da-aabd-4184ea85c9d8)]
-interface nsIActivityUIGlueCallback : nsISupports
-{
-    /**
-     * The activity service should start the activity at the specified index.
-     */
-    const short WEBAPPS_ACTIVITY = 0;
-
-    /**
-     * The activity service should deliver the specified result to the MozActivity callback.
-     */
-    const short NATIVE_ACTIVITY  = 1;
-
-    /**
-      * Called if the user picked an activitiy to launch.
-      * @param resultType Inidcates that {@code result} is an index or a native activity result.
-      * @param result     If WEBAPPS_ACTIVITY, the index of the chosen activity. Send '-1' if no choice is made.
-                          If NATIVE_ACTIVITY, the return value to be sent to the MozActivity.
-      */
-    void handleEvent(in short resultType, in jsval result);
-};
-
-/**
-  * To be implemented by @mozilla.org/dom/activities/ui-glue;1
-  */
-[scriptable, uuid(3caef69f-3569-4b19-bcea-1cfb0fee4466)]
-interface nsIActivityUIGlue : nsISupports
-{
-    /**
-      * This method is called even if the size of {@code activities} is 0 so that the callee can
-      * decide whether or not to defer the request to an alternate activity system.
-      *
-      * @param options     The ActivityOptions object in the form of { name: "send", data: { ... } }
-      * @param activities  A json blob which is an array of { "title":"...", "icon":"..." }.
-      * @param callback    The callback to send the index of the choosen activity, or the result.
-      */
-    void chooseActivity(in jsval options, in jsval activities,
-        in nsIActivityUIGlueCallback callback);
-};
deleted file mode 100644
--- a/dom/activities/moz.build
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DIRS += ['interfaces']
-
-XPCSHELL_TESTS_MANIFESTS += ['tests/unit/xpcshell.ini']
-
-MOCHITEST_CHROME_MANIFESTS += ['tests/mochi/mochitest.ini']
-
-EXPORTS.mozilla.dom += [
-    'Activity.h',
-]
-
-SOURCES += [
-    'Activity.cpp',
-]
-
-EXTRA_COMPONENTS += [
-    'Activities.manifest',
-    'ActivityMessageConfigurator.js',
-    'ActivityProxy.js',
-    'ActivityRequestHandler.js',
-    'ActivityWrapper.js',
-]
-
-EXTRA_JS_MODULES += [
-    'ActivitiesService.jsm',
-    'ActivitiesServiceFilter.jsm',
-]
-
-LOCAL_INCLUDES += [
-    '/dom/base',
-]
-
-include('/ipc/chromium/chromium-config.mozbuild')
-
-FINAL_LIBRARY = 'xul'
deleted file mode 100644
--- a/dom/activities/tests/mochi/common.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
-
-const ACTIVITY_GLUE_CID = Components.ID("{f4cfbe10-a106-4cd1-b04e-0d2a6aac138b}");
-const SYS_MSG_GLUE_CID = Components.ID("{b0b6b9af-bc4e-4200-bffe-fb7691065ec9}");
-
-const gRootUrl = "http://test/chrome/dom/activities/tests/mochi/";
-
-function registerComponent(aObject, aDescription, aContract, aCid) {
-  info("Registering " + aCid);
-
-  var componentManager =
-    Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
-  componentManager.registerFactory(aCid, aDescription, aContract, aObject);
-
-  // Keep the id on the object so we can unregister later.
-  aObject.cid = aCid;
-}
-
-function unregisterComponent(aObject) {
-  info("Unregistering " + aObject.cid);
-  var componentManager =
-    Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
-  componentManager.unregisterFactory(aObject.cid, aObject);
-}
-
-function cbError(aEvent) {
-  ok(false, "Error callback invoked " +
-            aEvent.target.error.name + " " + aEvent.target.error.message);
-  finish();
-}
-
-function unexpectedSuccess(aMsg) {
-  return function() {
-    ok(false, "Should not have succeeded: " + aMsg);
-    finish();
-  }
-}
deleted file mode 100644
--- a/dom/activities/tests/mochi/manifest.webapp
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "name": "Random app",
-  "activities": {
-    "import-app": { "blob": { "required": true } },
-    "bug1176712": [{
-      "filters": {
-        "type": "type1"
-      },
-      "href": "href1"
-    }, {
-      "filters": {
-        "type": "type2"
-      },
-      "href": "href2"
-    }]
-  }
-}
deleted file mode 100644
--- a/dom/activities/tests/mochi/manifest.webapp^headers^
+++ /dev/null
@@ -1,1 +0,0 @@
-Content-Type: application/manifest+json
\ No newline at end of file
deleted file mode 100644
--- a/dom/activities/tests/mochi/mochitest.ini
+++ /dev/null
@@ -1,11 +0,0 @@
-[DEFAULT]
-skip-if = (buildapp != 'b2g' && buildapp != 'mulet')
-support-files =
-  common.js
-  system.webapp
-  system.webapp^headers^
-  manifest.webapp
-  manifest.webapp^headers^
-
-[test_dev_mode_activity.html]
-[test_same_name_multiple_filters.html]
deleted file mode 100644
--- a/dom/activities/tests/mochi/system.webapp
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "name": "System app",
-  "activities": {
-    "import-app": { "blob": { "required": true } }
-  }
-}
deleted file mode 100644
--- a/dom/activities/tests/mochi/system.webapp^headers^
+++ /dev/null
@@ -1,1 +0,0 @@
-Content-Type: application/manifest+json
\ No newline at end of file
deleted file mode 100644
--- a/dom/activities/tests/mochi/test_dev_mode_activity.html
+++ /dev/null
@@ -1,269 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id={1123846}
--->
-<head>
-  <title>Test for Bug {1123846}</title>
-  <script type="application/javascript"
-          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <script type="application/javascript"
-          src="chrome://mochikit/content/chrome-harness.js"></script>
-  <script type="application/javascript"
-          src="http://test/chrome/dom/activities/tests/mochi/common.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
-</head>
-<body>
-
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id={1123846}">Mozilla Bug {1123846}</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script class="testbody" type="application/javascript;version=1.7">
-
-
-/**
-  * Tests the developer mode activities that can only be provided by the
-  * system app.
-  *
-  * We test the following:
-  * 1) No dev mode, no system app installed (failure).
-  * 2) No dev mode, system app installed (failure).
-  * 3) No dev mode, system app and other app installed (failure).
-  * 4) Dev mode, system app and other app installed (success, only system app returned).
-  */
-
-var gGenerator = runTest();
-
-function go() {
-  SpecialPowers.pushPermissions(
-    [{ "type": "webapps-manage", "allow": 1, "context": document },
-     { "type": "browser", "allow": 1, "context": document },
-     { "type": "embed-apps", "allow": 1, "context": document }],
-    function() {
-      SpecialPowers.pushPrefEnv(
-        {'set': [["dom.mozBrowserFramesEnabled", true],
-                 ["dom.sysmsg.enabled", true],
-                 ["dom.apps.developer_mode", false],
-                 ["dom.activities.developer_mode_only", "import-app"]]},
-        continueTest) });
-}
-
-SimpleTest.waitForExplicitFinish();
-
-var systemAppUrl = gRootUrl + "system.webapp";
-var otherAppUrl = gRootUrl + "manifest.webapp";
-
-function installApp(aUrl) {
-  var request = navigator.mozApps.install(aUrl, { });
-  request.onerror = cbError;
-  request.onsuccess = continueTest;
-  return request;
-}
-
-function installSystemApp() {
-  return installApp(systemAppUrl);
-}
-
-function installOtherApp() {
-  return installApp(otherAppUrl);
-}
-
-function uninstall(aApp) {
-  info("Uninstalling " + (aApp ? aApp.manifestURL : "NO APP!!"));
-  var request = navigator.mozApps.mgmt.uninstall(aApp);
-  request.onerror = cbError;
-  request.onsuccess = continueTest;
-}
-
-var ActivityGlue = {
-  // nsISupports implementation.
-  QueryInterface: function(iid) {
-    if (iid.equals(Ci.nsISupports) ||
-        iid.equals(Ci.nsIFactory) ||
-        iid.equals(Ci.nsIActivityUIGlue)) {
-      return this;
-    }
-
-    throw Cr.NS_ERROR_NO_INTERFACE;
-  },
-
-  // nsIFactory implementation.
-  createInstance: function(outer, iid) {
-    return this.QueryInterface(iid);
-  },
-
-  // nsIActivityUIGlue implementation.
-  chooseActivity: function(aOptions, aActivities, aCallback) {
-    aCallback.handleEvent(Ci.nsIActivityUIGlueCallback.WEBAPPS_ACTIVITY,
-                          aActivities.length == 1 ? 0 : -1);
-  }
-};
-
-var SystemMessageGlue = {
-  // nsISupports implementation.
-  QueryInterface: function(iid) {
-    if (iid.equals(Ci.nsISupports) ||
-        iid.equals(Ci.nsIFactory) ||
-        iid.equals(Ci.nsISystemMessageGlue)) {
-      return this;
-    }
-
-    throw Cr.NS_ERROR_NO_INTERFACE;
-  },
-
-  // nsIFactory implementation.
-  createInstance: function(outer, iid) {
-    return this.QueryInterface(iid);
-  },
-
-  // nsISystemMessageGlue implementation.
-  openApp(pageURL, manifestURL, type, target, showApp, onlyShowApp, extra) {
-    // We should only try to open a page in the system app.
-    is(manifestURL, systemAppUrl, "Opening a page in the system app.");
-  }
-};
-
-registerComponent(ActivityGlue,
-                  "Activity Glue",
-                  "@mozilla.org/dom/activities/ui-glue;1",
-                  ACTIVITY_GLUE_CID);
-
-registerComponent(SystemMessageGlue,
-                  "System Message Glue",
-                  "@mozilla.org/dom/messages/system-message-glue;1",
-                  SYS_MSG_GLUE_CID);
-
-function finish() {
-  unregisterComponent(ActivityGlue);
-  unregisterComponent(SystemMessageGlue);
-  obsService.removeObserver(continueTest, "new-activity-registered-success");
-  obsService.removeObserver(continueTest, "new-activity-registered-failure");
-
-  SimpleTest.finish();
-}
-
-function continueTest() {
-  try {
-    gGenerator.next();
-  } catch (e if e instanceof StopIteration) {
-    finish();
-  }
-}
-
-var obsService = Cc["@mozilla.org/observer-service;1"]
-                   .getService(Ci.nsIObserverService);
-
-obsService.addObserver(continueTest, "new-activity-registered-success", false);
-obsService.addObserver(continueTest, "new-activity-registered-failure", false);
-
-/**
-  * Test dev mode activity.
-  */
-function runTest() {
-  SpecialPowers.autoConfirmAppInstall(continueTest);
-  yield undefined;
-
-  SpecialPowers.autoConfirmAppUninstall(continueTest);
-  yield undefined;
-
-  // Check how many apps we are starting with.
-  var request = navigator.mozApps.mgmt.getAll();
-  request.onerror = cbError;
-  request.onsuccess = continueTest;
-  yield undefined;
-  var initialAppsCount = request.result.length;
-  info("Starting with " + initialAppsCount + " apps installed.");
-
-  // 1) No dev mode, no system app installed (failure).
-  var activity = new MozActivity({ name: "import-app" });
-  activity.onerror = function() {
-    ok(true, "1) No dev mode, no system app installed");
-    continueTest();
-  }
-  activity.onsuccess = unexpectedSuccess("1) No dev mode, no system app installed");
-  yield undefined;
-
-
-  // 2) No dev mode, system app installed (failure).
-  // Configure the system app manifest url.
-  SpecialPowers.pushPrefEnv(
-        {'set': [["b2g.system_manifest_url", systemAppUrl]]},
-        continueTest);
-  yield undefined;
-
-  // Install the system app.
-  request = installSystemApp();
-  yield undefined;
-  var systemApp = request.result;
-  ok(systemApp, "systemApp is non-null");
-
-  // yielding for the activity install observer.
-  yield undefined;
-
-  activity = new MozActivity({ name: "import-app" });
-  activity.onerror = function() {
-    ok(true, "2) No dev mode, system app installed");
-    continueTest();
-  }
-  activity.onsuccess = unexpectedSuccess("2) No dev mode, system app installed");
-  yield undefined;
-
-  // 3) No dev mode, system app and other app installed (failure).
-  request = installOtherApp();
-  yield undefined;
-  var otherApp = request.result;
-  ok(otherApp, "otherApp is non-null");
-
-  // yielding for the activity install observer.
-  yield undefined;
-
-  activity = new MozActivity({ name: "import-app" });
-  activity.onerror = function() {
-    ok(true, "3) No dev mode, system app and other app installed");
-    continueTest();
-  }
-  activity.onsuccess = unexpectedSuccess("3) No dev mode, system app and other app installed");
-  yield undefined;
-
-  // 4) Dev mode, system app and other app installed.
-  SpecialPowers.pushPrefEnv(
-        {'set': [["dom.apps.developer_mode", true]]},
-        continueTest);
-  yield undefined;
-
-  activity = new MozActivity({ name: "import-app" });
-  activity.onsuccess = function() {
-    ok(true, "4) Dev mode, system app and other app installed");
-    continueTest();
-  }
-  activity.onerror = function(aEvent) {
-    ok(false, "4) Got error: " + aEvent.error.name);
-    finish();
-  }
-  yield undefined;
-
-  // Cleanup
-  uninstall(systemApp);
-  yield undefined;
-
-  uninstall(otherApp);
-  yield undefined;
-
-  // Check that we restored the app registry.
-  request = navigator.mozApps.mgmt.getAll();
-  request.onerror = cbError;
-  request.onsuccess = continueTest;
-  yield undefined;
-
-  is(request.result.length, initialAppsCount, "All apps are uninstalled.");
-}
-
-addLoadEvent(go);
-
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/activities/tests/mochi/test_same_name_multiple_filters.html
+++ /dev/null
@@ -1,220 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id={1176712}
--->
-<head>
-  <title>Test for Bug {1176712}</title>
-  <script type="application/javascript"
-          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-  <script type="application/javascript"
-          src="chrome://mochikit/content/chrome-harness.js"></script>
-  <script type="application/javascript"
-          src="http://test/chrome/dom/activities/tests/mochi/common.js"></script>
-  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
-</head>
-<body>
-
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id={1176712}">Mozilla Bug {1176712}</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script class="testbody" type="application/javascript;version=1.7">
-
-var gGenerator = runTest();
-
-function go() {
-  SpecialPowers.pushPermissions(
-    [{ "type": "webapps-manage", "allow": 1, "context": document },
-     { "type": "browser", "allow": 1, "context": document },
-     { "type": "embed-apps", "allow": 1, "context": document }],
-    function() {
-      SpecialPowers.pushPrefEnv(
-        {'set': [["dom.mozBrowserFramesEnabled", true],
-                 ["dom.sysmsg.enabled", true]]},
-        continueTest) });
-}
-
-SimpleTest.waitForExplicitFinish();
-
-function installApp(aUrl) {
-  var request = navigator.mozApps.install(aUrl, { });
-  request.onerror = cbError;
-  request.onsuccess = continueTest;
-  return request;
-}
-
-function uninstall(aApp) {
-  info("Uninstalling " + (aApp ? aApp.manifestURL : "NO APP!!"));
-  var request = navigator.mozApps.mgmt.uninstall(aApp);
-  request.onerror = cbError;
-  request.onsuccess = continueTest;
-}
-
-var ActivityGlue = {
-  // nsISupports implementation.
-  QueryInterface: function(iid) {
-    if (iid.equals(Ci.nsISupports) ||
-        iid.equals(Ci.nsIFactory) ||
-        iid.equals(Ci.nsIActivityUIGlue)) {
-      return this;
-    }
-
-    throw Cr.NS_ERROR_NO_INTERFACE;
-  },
-
-  // nsIFactory implementation.
-  createInstance: function(outer, iid) {
-    return this.QueryInterface(iid);
-  },
-
-  // nsIActivityUIGlue implementation.
-  chooseActivity: function(aOptions, aActivities, aCallback) {
-    aCallback.handleEvent(Ci.nsIActivityUIGlueCallback.WEBAPPS_ACTIVITY,
-                          aActivities.length == 1 ? 0 : -1);
-  }
-};
-
-var SystemMessageGlue = {
-  // nsISupports implementation.
-  QueryInterface: function(iid) {
-    if (iid.equals(Ci.nsISupports) ||
-        iid.equals(Ci.nsIFactory) ||
-        iid.equals(Ci.nsISystemMessageGlue)) {
-      return this;
-    }
-
-    throw Cr.NS_ERROR_NO_INTERFACE;
-  },
-
-  // nsIFactory implementation.
-  createInstance: function(outer, iid) {
-    return this.QueryInterface(iid);
-  },
-
-  // nsISystemMessageGlue implementation.
-  openApp(pageURL, manifestURL, type, target, showApp, onlyShowApp, extra) {
-  }
-};
-
-registerComponent(ActivityGlue,
-                  "Activity Glue",
-                  "@mozilla.org/dom/activities/ui-glue;1",
-                  ACTIVITY_GLUE_CID);
-
-registerComponent(SystemMessageGlue,
-                  "System Message Glue",
-                  "@mozilla.org/dom/messages/system-message-glue;1",
-                  SYS_MSG_GLUE_CID);
-
-function finish() {
-  unregisterComponent(ActivityGlue);
-  unregisterComponent(SystemMessageGlue);
-  SimpleTest.finish();
-}
-
-function continueTest() {
-  try {
-    gGenerator.next();
-  } catch (e if e instanceof StopIteration) {
-    finish();
-  }
-}
-
-function runTest() {
-  SpecialPowers.autoConfirmAppInstall(continueTest);
-  yield undefined;
-
-  SpecialPowers.autoConfirmAppUninstall(continueTest);
-  yield undefined;
-
-  // Check how many apps we are starting with.
-  var request = navigator.mozApps.mgmt.getAll();
-  request.onerror = cbError;
-  request.onsuccess = continueTest;
-  yield undefined;
-  var initialAppsCount = request.result.length;
-  info("Starting with " + initialAppsCount + " apps installed.");
-
-  // Before app installed
-
-  var activity = new MozActivity({
-    name: "bug1176712",
-    data: {
-      type: "type1"
-    }
-  });
-  activity.onsuccess = unexpectedSuccess("Shouldn't launch unregistered activity");
-  activity.onerror = () => {
-    ok(activity.error.name == "NO_PROVIDER", "Expected NO_PROVIDER");
-    continueTest();
-  };
-  yield undefined;
-
-  var activity = new MozActivity({
-    name: "bug1176712",
-    data: {
-      type: "type2"
-    }
-  });
-  activity.onsuccess = unexpectedSuccess("Shouldn't launch unregistered activity");
-  activity.onerror = () => {
-    ok(activity.error.name == "NO_PROVIDER", "Expected NO_PROVIDER");
-    continueTest();
-  };
-  yield undefined;
-
-  var request = installApp(gRootUrl + "manifest.webapp");
-  yield undefined;
-  var app = request.result;
-  ok(app, "App installed");
-
-  // After app installed
-
-  var activity = new MozActivity({
-    name: "bug1176712",
-    data: {
-      type: "type1"
-    }
-  });
-  activity.onsuccess = function() {
-    ok(true, "Activity launch succeed");
-    continueTest();
-  }
-  activity.onerror = cbError;
-  yield undefined;
-
-  var activity = new MozActivity({
-    name: "bug1176712",
-    data: {
-      type: "type2"
-    }
-  });
-  activity.onsuccess = function() {
-    ok(true, "Activity launch succeed");
-    continueTest();
-  }
-  activity.onerror = cbError;
-  yield undefined;
-
-  // Cleanup
-  uninstall(app);
-  yield undefined;
-
-  // Check that we restored the app registry.
-  request = navigator.mozApps.mgmt.getAll();
-  request.onerror = cbError;
-  request.onsuccess = continueTest;
-  yield undefined;
-
-  is(request.result.length, initialAppsCount, "All apps are uninstalled.");
-}
-
-addLoadEvent(go);
-
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/activities/tests/unit/test_activityFilters.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
-   http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function run_test() {
-  Components.utils.import("resource:///modules/ActivitiesServiceFilter.jsm")
-
-  do_check_true(!!ActivitiesServiceFilter);
-
-  // No requests, no filters:
-  do_check_true(ActivitiesServiceFilter.match(null, null));
-  do_check_true(ActivitiesServiceFilter.match({}, {}));
-
-  // No filters:
-  do_check_true(ActivitiesServiceFilter.match({foobar: 42}, null));
-
-  // Empty request:
-  do_check_true(ActivitiesServiceFilter.match({}, {a: 'foobar', b: [1, 2, 3], c: 42}));
-
-
-  // Simple match:
-  do_check_true(ActivitiesServiceFilter.match({a: 'foobar'},
-                                              {a: 'foobar', b: [1, 2, 3], c: 42}));
-  do_check_false(ActivitiesServiceFilter.match({a: 'foobar', b: 2, c: true},
-                                               {a: 'foobar', b: [1, 2, 3], c: 42}));
-  do_check_true(ActivitiesServiceFilter.match({a: 'foobar', b: 2, c: 42},
-                                              {a: 'foobar', b: [1, 2, 3], c: 42}));
-  do_check_false(ActivitiesServiceFilter.match({a: 'foobar2'},
-                                               {a: 'foobar', b: [1, 2, 3], c: 42}));
-
-  // Simple match in array:
-  do_check_true(ActivitiesServiceFilter.match({b: 2},
-                                              {a: 'foobar', b: [1, 2, 3], c: 42}));
-  do_check_false(ActivitiesServiceFilter.match({b: 4},
-                                               {a: 'foobar', b: [1, 2, 3], c: 42}));
-  do_check_true(ActivitiesServiceFilter.match({b: [2, 4]},
-                                              {a: 'foobar', b: [1, 2, 3], c: 42}));
-  do_check_false(ActivitiesServiceFilter.match({b: [4, 5]},
-                                               {a: 'foobar', b: [1, 2, 3], c: 42}));
-  do_check_false(ActivitiesServiceFilter.match({a: [4, 'foobar2']},
-                                               {a: 'foobar', b: [1, 2, 3], c: 42}));
-  do_check_true(ActivitiesServiceFilter.match({a: [4, 'foobar']},
-                                              {a: 'foobar', b: [1, 2, 3], c: 42}));
-  do_check_true(ActivitiesServiceFilter.match({a: ['foo', 'bar']},
-                                              {a: 'foo'}));
-
-  // Unknown property
-  do_check_true(ActivitiesServiceFilter.match({k: 4},
-                                              {a: 'foobar', b: [1, 2, 3], c: 42}));
-  do_check_true(ActivitiesServiceFilter.match({k: [1,2,3,4]},
-                                              {a: 'foobar', b: [1, 2, 3], c: 42}));
-
-  // Required/non required
-  do_check_false(ActivitiesServiceFilter.match({},
-                                               {a: { required: true, value: 'foobar'}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 'foobar'},
-                                              {a: { required: true, value: 'foobar'}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 'foobar2'},
-                                               {a: { required: true, value: 'foobar'}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 'foobar2'},
-                                               {a: { required: true, value: ['a', 'b', 'foobar']}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 'foobar'},
-                                              {a: { required: true, value: ['a', 'b', 'foobar']}}));
-  do_check_true(ActivitiesServiceFilter.match({a: ['k', 'z', 'foobar']},
-                                              {a: { required: true, value: ['a', 'b', 'foobar']}}));
-  do_check_false(ActivitiesServiceFilter.match({a: ['k', 'z', 'foobar2']},
-                                               {a: { required: true, value: ['a', 'b', 'foobar']}}));
-
-  // Empty values
-  do_check_true(ActivitiesServiceFilter.match({a: 42},
-                                              {a: { required: true}}));
-  do_check_false(ActivitiesServiceFilter.match({},
-                                               {a: { required: true}}));
-
-  // Boolean
-  do_check_true(ActivitiesServiceFilter.match({a: false},
-                                              {a: { required: true, value: false}}));
-  do_check_false(ActivitiesServiceFilter.match({a: true},
-                                               {a: { required: true, value: false}}));
-  do_check_true(ActivitiesServiceFilter.match({a: [false, true]},
-                                              {a: { required: true, value: false}}));
-  do_check_true(ActivitiesServiceFilter.match({a: [false, true]},
-                                              {a: { required: true, value: [false,true]}}));
-
-  // Number
-  do_check_true(ActivitiesServiceFilter.match({a: 42},
-                                              {a: { required: true, value: 42}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 2},
-                                               {a: { required: true, value: 42}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 2},
-                                              {a: { required: true, min: 1}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 2},
-                                              {a: { required: true, min: 2}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 2},
-                                               {a: { required: true, min: 3}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 2},
-                                               {a: { required: true, max: 1}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 2},
-                                              {a: { required: true, max: 2}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 2},
-                                              {a: { required: true, max: 3}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 2},
-                                               {a: { required: true, min: 1, max: 1}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 2},
-                                              {a: { required: true, min: 1, max: 2}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 2},
-                                              {a: { required: true, min: 2, max: 2}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 2},
-                                               {a: { required: true, value: 'foo'}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 2},
-                                               {a: { required: true, min: 100, max: 0}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 2},
-                                              {a: { required: true, min: 'a', max: 'b'}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 2},
-                                               {a: { required: true, min: 10, max: 1}}));
-
-  // String
-  do_check_true(ActivitiesServiceFilter.match({a: 'foo'},
-                                              {a: { required: true, value: 'foo'}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 'foo2'},
-                                               {a: { required: true, value: 'foo'}}));
-
-  // Number VS string
-  do_check_true(ActivitiesServiceFilter.match({a: '42'},
-                                              {a: { required: true, value: 42}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 42},
-                                              {a: { required: true, value: '42'}}));
-  do_check_true(ActivitiesServiceFilter.match({a: '-42e+12'},
-                                              {a: { required: true, value: -42e+12}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 42},
-                                              {a: { required: true, min: '1', max: '50'}}));
-  do_check_true(ActivitiesServiceFilter.match({a: '42'},
-                                              {a: 42 }));
-  do_check_true(ActivitiesServiceFilter.match({a: 42},
-                                              {a: '42' }));
-  do_check_false(ActivitiesServiceFilter.match({a: 42},
-                                               {a: { min: '44' }}));
-  do_check_false(ActivitiesServiceFilter.match({a: 42},
-                                               {a: { max: '0' }}));
-
-  // String + Pattern
-  do_check_true(ActivitiesServiceFilter.match({a: 'foobar'},
-                                              {a: { required: true, pattern: 'foobar'}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 'aafoobar'},
-                                               {a: { required: true, pattern: 'foobar'}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 'aaFOOsdsad'},
-                                               {a: { required: true, pattern: 'foo', patternFlags: 'i'}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 'aafoobarasdsad'},
-                                               {a: { required: true, pattern: 'foo'}}));
-  do_check_false(ActivitiesServiceFilter.match({a: 'aaFOOsdsad'},
-                                               {a: { required: true, pattern: 'foobar'}}));
-  do_check_true(ActivitiesServiceFilter.match({a: 'FoOBaR'},
-                                              {a: { required: true, pattern: 'foobar', patternFlags: 'i'}}));
-
-  // Bug 923274
-  do_check_true(ActivitiesServiceFilter.match({a:[]}, {a:'a'}));
-  do_check_false(ActivitiesServiceFilter.match({a:[]}, {a: { required: true, value: 'a'}}));
-}
deleted file mode 100644
--- a/dom/activities/tests/unit/xpcshell.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[DEFAULT]
-head =
-tail =
-skip-if = toolkit == 'gonk'
-
-[test_activityFilters.js]
--- a/dom/apps/Webapps.jsm
+++ b/dom/apps/Webapps.jsm
@@ -31,17 +31,16 @@ function buildIDToTime() {
 
 const PLATFORM_BUILD_ID_TIME = buildIDToTime();
 
 this.EXPORTED_SYMBOLS = ["DOMApplicationRegistry"];
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/FileUtils.jsm");
-Cu.import('resource://gre/modules/ActivitiesService.jsm');
 Cu.import("resource://gre/modules/AppsUtils.jsm");
 Cu.import("resource://gre/modules/AppDownloadManager.jsm");
 Cu.import("resource://gre/modules/osfile.jsm");
 Cu.import("resource://gre/modules/Task.jsm");
 Cu.import("resource://gre/modules/Promise.jsm");
 Cu.import("resource://gre/modules/MessageBroadcaster.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "UserCustomizations", function() {
--- a/dom/bindings/Bindings.conf
+++ b/dom/bindings/Bindings.conf
@@ -72,20 +72,16 @@
 #   and the other should have 'workers':False (or left unset). These will
 #   be used to generate bindings for workers and for mainthread, as you would
 #   expect.
 # Nothing else is allowed.  If you have a list with a single 'workers':False
 # entry, just make it not a list.
 
 DOMInterfaces = {
 
-'MozActivity': {
-    'nativeType': 'mozilla::dom::Activity',
-},
-
 'AbstractWorker': {
     'concrete': False
 },
 
 'AnimationEffectReadOnly': {
     'concrete': False
 },
 
--- a/dom/moz.build
+++ b/dom/moz.build
@@ -36,17 +36,16 @@ interfaces = [
 
 DIRS += ['interfaces/' + i for i in interfaces]
 
 DIRS += [
     'animation',
     'apps',
     'base',
     'bluetooth',
-    'activities',
     'archivereader',
     'bindings',
     'battery',
     'browser-element',
     'cache',
     'canvas',
     'cellbroadcast',
     'contacts',
deleted file mode 100644
--- a/dom/webidl/ActivityRequestHandler.webidl
+++ /dev/null
@@ -1,17 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-[Pref="dom.sysmsg.enabled",
- JSImplementation="@mozilla.org/dom/activities/request-handler;1",
- ChromeConstructor(DOMString id, optional ActivityOptions options, optional boolean returnvalue),
- ChromeOnly]
-interface ActivityRequestHandler
-{
-    [UnsafeInPrerendering]
-    void postResult(any result);
-    [UnsafeInPrerendering]
-    void postError(DOMString error);
-    [Pure, Cached, Frozen]
-    readonly attribute ActivityOptions source;
-};
deleted file mode 100644
--- a/dom/webidl/MozActivity.webidl
+++ /dev/null
@@ -1,16 +0,0 @@
-/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-dictionary ActivityOptions {
-  DOMString name = "";
-  any data = null;
-  boolean getFilterResults = false;
-};
-
-[Pref="dom.sysmsg.enabled",
- Constructor(optional ActivityOptions options)]
-interface MozActivity : DOMRequest {
-};
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -14,17 +14,16 @@ PREPROCESSED_WEBIDL_FILES = [
     'Promise.webidl',
     'PromiseDebugging.webidl',
     'ServiceWorkerRegistration.webidl',
     'Window.webidl',
 ]
 
 WEBIDL_FILES = [
     'AbstractWorker.webidl',
-    'ActivityRequestHandler.webidl',
     'AddonManager.webidl',
     'AnalyserNode.webidl',
     'Animatable.webidl',
     'Animation.webidl',
     'AnimationEffectReadOnly.webidl',
     'AnimationEffectTiming.webidl',
     'AnimationEffectTimingReadOnly.webidl',
     'AnimationEvent.webidl',
@@ -316,17 +315,16 @@ WEBIDL_FILES = [
     'MessagePortList.webidl',
     'MimeType.webidl',
     'MimeTypeArray.webidl',
     'MMICall.webidl',
     'MmsMessage.webidl',
     'MobileMessageThread.webidl',
     'MouseEvent.webidl',
     'MouseScrollEvent.webidl',
-    'MozActivity.webidl',
     'MozCellBroadcast.webidl',
     'MozCellBroadcastMessage.webidl',
     'MozIcc.webidl',
     'MozIccInfo.webidl',
     'MozIccManager.webidl',
     'MozMobileCellInfo.webidl',
     'MozMobileConnection.webidl',
     'MozMobileConnectionArray.webidl',
--- a/old-configure.in
+++ b/old-configure.in
@@ -5704,24 +5704,16 @@ dnl ====================================
 dnl = Enable Support for Payment API
 dnl ========================================================
 if test -n "$MOZ_PAY"; then
     AC_DEFINE(MOZ_PAY)
 fi
 AC_SUBST(MOZ_PAY)
 
 dnl ========================================================
-dnl = Enable Browser Support for Activities
-dnl ========================================================
-if test -n "$MOZ_ACTIVITIES"; then
-    AC_DEFINE(MOZ_ACTIVITIES)
-fi
-AC_SUBST(MOZ_ACTIVITIES)
-
-dnl ========================================================
 dnl = Enable Support for AudioChannelManager API
 dnl ========================================================
 if test -n "$MOZ_AUDIO_CHANNEL_MANAGER"; then
     AC_DEFINE(MOZ_AUDIO_CHANNEL_MANAGER)
 fi
 AC_SUBST(MOZ_AUDIO_CHANNEL_MANAGER)
 
 dnl ========================================================