Backed out changeset d87da7f7a3a9 (bug 693555) for android and b2g build bustage
authorWes Kocher <wkocher@mozilla.com>
Tue, 01 Jul 2014 15:50:08 -0700
changeset 191862 a0b340c5704d9de45c6b35caeb87671ff4276887
parent 191861 d87da7f7a3a9ed00646f42cd16866e3034f97442
child 191863 15188cb383b41dd8b2adb12a75bf09fcf8816b52
push id45685
push usercbook@mozilla.com
push dateWed, 02 Jul 2014 13:09:48 +0000
treeherdermozilla-inbound@60133a85f8ae [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs693555
milestone33.0a1
backs outd87da7f7a3a9ed00646f42cd16866e3034f97442
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
Backed out changeset d87da7f7a3a9 (bug 693555) for android and b2g build bustage
browser/base/content/browser-context.inc
dom/ipc/ContentChild.cpp
dom/ipc/ContentChild.h
dom/ipc/ContentParent.cpp
dom/ipc/ContentParent.h
dom/ipc/PContent.ipdl
editor/composer/nsEditorSpellCheck.cpp
extensions/spellcheck/hunspell/src/PRemoteSpellcheckEngine.ipdl
extensions/spellcheck/hunspell/src/RemoteSpellCheckEngineChild.cpp
extensions/spellcheck/hunspell/src/RemoteSpellCheckEngineChild.h
extensions/spellcheck/hunspell/src/RemoteSpellCheckEngineParent.cpp
extensions/spellcheck/hunspell/src/RemoteSpellCheckEngineParent.h
extensions/spellcheck/hunspell/src/moz.build
extensions/spellcheck/src/moz.build
extensions/spellcheck/src/mozInlineSpellChecker.cpp
extensions/spellcheck/src/mozSpellChecker.cpp
extensions/spellcheck/src/mozSpellChecker.h
toolkit/content/widgets/textbox.xml
toolkit/modules/InlineSpellChecker.jsm
--- a/browser/base/content/browser-context.inc
+++ b/browser/base/content/browser-context.inc
@@ -371,17 +371,17 @@
                 label="&viewPageInfoCmd.label;"
                 accesskey="&viewPageInfoCmd.accesskey;"
                 oncommand="gContextMenu.viewInfo();"/>
       <menuseparator id="spell-separator"/>
       <menuitem id="spell-check-enabled"
                 label="&spellCheckToggle.label;"
                 type="checkbox"
                 accesskey="&spellCheckToggle.accesskey;"
-                oncommand="InlineSpellCheckerUI.toggleEnabled(window);"/>
+                oncommand="InlineSpellCheckerUI.toggleEnabled();"/>
       <menuitem id="spell-add-dictionaries-main"
                 label="&spellAddDictionaries.label;"
                 accesskey="&spellAddDictionaries.accesskey;"
                 oncommand="gContextMenu.addDictionaries();"/>
       <menu id="spell-dictionaries"
             label="&spellDictionaries.label;"
             accesskey="&spellDictionaries.accesskey;">
           <menupopup id="spell-dictionaries-menu">
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -145,17 +145,16 @@
 #include "nsIPrincipal.h"
 #include "nsDeviceStorage.h"
 #include "AudioChannelService.h"
 #include "JavaScriptChild.h"
 #include "mozilla/dom/DataStoreService.h"
 #include "mozilla/dom/telephony/PTelephonyChild.h"
 #include "mozilla/dom/time/DateCacheCleaner.h"
 #include "mozilla/net/NeckoMessageUtils.h"
-#include "mozilla/RemoteSpellcheckEngineChild.h"
 
 using namespace base;
 using namespace mozilla;
 using namespace mozilla::docshell;
 using namespace mozilla::dom::bluetooth;
 using namespace mozilla::dom::devicestorage;
 using namespace mozilla::dom::ipc;
 using namespace mozilla::dom::mobilemessage;
@@ -1047,30 +1046,16 @@ ContentChild::DeallocPBrowserChild(PBrow
 }
 
 PBlobChild*
 ContentChild::AllocPBlobChild(const BlobConstructorParams& aParams)
 {
     return nsIContentChild::AllocPBlobChild(aParams);
 }
 
-mozilla::PRemoteSpellcheckEngineChild *
-ContentChild::AllocPRemoteSpellcheckEngineChild()
-{
-    mozilla::RemoteSpellcheckEngineChild *child = new mozilla::RemoteSpellcheckEngineChild();
-    return child;
-}
-
-bool
-ContentChild::DeallocPRemoteSpellcheckEngineChild(PRemoteSpellcheckEngineChild *child)
-{
-    delete child;
-    return true;
-}
-
 bool
 ContentChild::DeallocPBlobChild(PBlobChild* aActor)
 {
     return nsIContentChild::DeallocPBlobChild(aActor);
 }
 
 PBlobChild*
 ContentChild::SendPBlobConstructor(PBlobChild* aActor,
--- a/dom/ipc/ContentChild.h
+++ b/dom/ipc/ContentChild.h
@@ -21,17 +21,16 @@
 
 struct ChromePackage;
 class nsIDOMBlob;
 class nsIObserver;
 struct ResourceMapping;
 struct OverrideMapping;
 
 namespace mozilla {
-class RemoteSpellcheckEngineChild;
 
 namespace ipc {
 class OptionalURIParams;
 class URIParams;
 }// namespace ipc
 
 namespace jsipc {
 class JavaScriptChild;
@@ -233,18 +232,16 @@ public:
 
     virtual bool RecvRegisterChrome(const InfallibleTArray<ChromePackage>& packages,
                                     const InfallibleTArray<ResourceMapping>& resources,
                                     const InfallibleTArray<OverrideMapping>& overrides,
                                     const nsCString& locale) MOZ_OVERRIDE;
 
     virtual mozilla::jsipc::PJavaScriptChild* AllocPJavaScriptChild() MOZ_OVERRIDE;
     virtual bool DeallocPJavaScriptChild(mozilla::jsipc::PJavaScriptChild*) MOZ_OVERRIDE;
-    virtual PRemoteSpellcheckEngineChild* AllocPRemoteSpellcheckEngineChild() MOZ_OVERRIDE;
-    virtual bool DeallocPRemoteSpellcheckEngineChild(PRemoteSpellcheckEngineChild*) MOZ_OVERRIDE;
 
     virtual bool RecvSetOffline(const bool& offline) MOZ_OVERRIDE;
 
     virtual bool RecvSpeakerManagerNotify() MOZ_OVERRIDE;
 
     virtual bool RecvNotifyVisited(const URIParams& aURI) MOZ_OVERRIDE;
     // auto remove when alertfinished is received.
     nsresult AddRemoteAlertObserver(const nsString& aData, nsIObserver* aObserver);
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -151,18 +151,16 @@ using namespace mozilla::system;
 
 #ifdef MOZ_B2G_BT
 #include "BluetoothParent.h"
 #include "BluetoothService.h"
 #endif
 
 #include "JavaScriptParent.h"
 
-#include "mozilla/RemoteSpellcheckEngineParent.h"
-
 #ifdef MOZ_B2G_FM
 #include "mozilla/dom/FMRadioParent.h"
 #endif
 
 #include "Crypto.h"
 
 #ifdef MOZ_WEBSPEECH
 #include "mozilla/dom/SpeechSynthesisParent.h"
@@ -2656,30 +2654,16 @@ ContentParent::AllocPBlobParent(const Bl
 
 bool
 ContentParent::DeallocPBlobParent(PBlobParent* aActor)
 {
     delete aActor;
     return true;
 }
 
-mozilla::PRemoteSpellcheckEngineParent *
-ContentParent::AllocPRemoteSpellcheckEngineParent()
-{
-    mozilla::RemoteSpellcheckEngineParent *parent = new mozilla::RemoteSpellcheckEngineParent();
-    return parent;
-}
-
-bool
-ContentParent::DeallocPRemoteSpellcheckEngineParent(PRemoteSpellcheckEngineParent *parent)
-{
-    delete parent;
-    return true;
-}
-
 void
 ContentParent::KillHard()
 {
     // On Windows, calling KillHard multiple times causes problems - the
     // process handle becomes invalid on the first call, causing a second call
     // to crash our process - more details in bug 890840.
     if (mCalledKillHard) {
         return;
--- a/dom/ipc/ContentParent.h
+++ b/dom/ipc/ContentParent.h
@@ -31,17 +31,16 @@ class mozIApplication;
 class nsConsoleService;
 class nsICycleCollectorLogSink;
 class nsIDOMBlob;
 class nsIDumpGCAndCCLogsCallback;
 class nsIMemoryReporter;
 class ParentIdleListener;
 
 namespace mozilla {
-class PRemoteSpellcheckEngineParent;
 
 namespace ipc {
 class OptionalURIParams;
 class URIParams;
 class TestShellParent;
 } // namespace ipc
 
 namespace jsipc {
@@ -242,17 +241,16 @@ public:
     }
 
     virtual PJavaScriptParent*
     AllocPJavaScriptParent() MOZ_OVERRIDE;
     virtual bool
     RecvPJavaScriptConstructor(PJavaScriptParent* aActor) MOZ_OVERRIDE {
         return PContentParent::RecvPJavaScriptConstructor(aActor);
     }
-    virtual PRemoteSpellcheckEngineParent* AllocPRemoteSpellcheckEngineParent() MOZ_OVERRIDE;
 
     virtual bool RecvRecordingDeviceEvents(const nsString& aRecordingStatus,
                                            const nsString& aPageURL,
                                            const bool& aIsAudio,
                                            const bool& aIsVideo) MOZ_OVERRIDE;
 
     bool CycleCollectWithLogs(bool aDumpAllTraces,
                               nsICycleCollectorLogSink* aSink,
@@ -386,17 +384,16 @@ private:
 
     virtual bool RecvGetProcessAttributes(uint64_t* aId,
                                           bool* aIsForApp,
                                           bool* aIsForBrowser) MOZ_OVERRIDE;
     virtual bool RecvGetXPCOMProcessAttributes(bool* aIsOffline) MOZ_OVERRIDE;
 
     virtual bool DeallocPJavaScriptParent(mozilla::jsipc::PJavaScriptParent*) MOZ_OVERRIDE;
 
-    virtual bool DeallocPRemoteSpellcheckEngineParent(PRemoteSpellcheckEngineParent*) MOZ_OVERRIDE;
     virtual PBrowserParent* AllocPBrowserParent(const IPCTabContext& aContext,
                                                 const uint32_t& aChromeFlags,
                                                 const uint64_t& aId,
                                                 const bool& aIsForApp,
                                                 const bool& aIsForBrowser) MOZ_OVERRIDE;
     virtual bool DeallocPBrowserParent(PBrowserParent* frame) MOZ_OVERRIDE;
 
     virtual PDeviceStorageRequestParent*
--- a/dom/ipc/PContent.ipdl
+++ b/dom/ipc/PContent.ipdl
@@ -25,17 +25,16 @@ include protocol PMemoryReportRequest;
 include protocol PNecko;
 include protocol PSharedBufferManager;
 include protocol PSms;
 include protocol PSpeechSynthesis;
 include protocol PStorage;
 include protocol PTelephony;
 include protocol PTestShell;
 include protocol PJavaScript;
-include protocol PRemoteSpellcheckEngine;
 include DOMTypes;
 include JavaScriptTypes;
 include InputStreamParams;
 include PTabContext;
 include URIParams;
 include ProtocolTypes;
 
 using GeoPosition from "nsGeoPositionIPCSerialiser.h";
@@ -305,17 +304,16 @@ intr protocol PContent
     manages PMemoryReportRequest;
     manages PNecko;
     manages PSms;
     manages PSpeechSynthesis;
     manages PStorage;
     manages PTelephony;
     manages PTestShell;
     manages PJavaScript;
-    manages PRemoteSpellcheckEngine;
 
 both:
     // Depending on exactly how the new browser is being created, it might be
     // created from either the child or parent process!
     //
     // The child creates the PBrowser as part of
     // TabChild::BrowserFrameProvideWindow (which happens when the child's
     // content calls window.open()), and the parent creates the PBrowser as part
@@ -459,17 +457,16 @@ parent:
 
     sync CreateChildProcess(IPCTabContext context,
                             ProcessPriority priority)
         returns (uint64_t id, bool isForApp, bool isForBrowser);
     intr BridgeToChildProcess(uint64_t id);
 
     async PJavaScript();
 
-    sync PRemoteSpellcheckEngine();
     PDeviceStorageRequest(DeviceStorageParams params);
 
     PFileSystemRequest(FileSystemParams params);
 
     sync PCrashReporter(NativeThreadId tid, uint32_t processType);
 
     sync GetRandomValues(uint32_t length)
         returns (uint8_t[] randomValues);
--- a/editor/composer/nsEditorSpellCheck.cpp
+++ b/editor/composer/nsEditorSpellCheck.cpp
@@ -37,17 +37,16 @@
 #include "nsIVariant.h"                 // for nsIWritableVariant, etc
 #include "nsLiteralString.h"            // for NS_LITERAL_STRING, etc
 #include "nsMemory.h"                   // for nsMemory
 #include "nsReadableUtils.h"            // for ToNewUnicode, EmptyString, etc
 #include "nsServiceManagerUtils.h"      // for do_GetService
 #include "nsString.h"                   // for nsAutoString, nsString, etc
 #include "nsStringFwd.h"                // for nsAFlatString
 #include "nsStyleUtil.h"                // for nsStyleUtil
-#include "nsXULAppAPI.h"                // for XRE_GetProcessType
 
 using namespace mozilla;
 
 class UpdateDictionnaryHolder {
   private:
     nsEditorSpellCheck* mSpellCheck;
   public:
     UpdateDictionnaryHolder(nsEditorSpellCheck* esc): mSpellCheck(esc) {
@@ -151,22 +150,16 @@ private:
 };
 NS_IMPL_ISUPPORTS(DictionaryFetcher, nsIContentPrefCallback2)
 
 NS_IMETHODIMP
 DictionaryFetcher::Fetch(nsIEditor* aEditor)
 {
   NS_ENSURE_ARG_POINTER(aEditor);
 
-  if (XRE_GetProcessType() == GeckoProcessType_Content) {
-    // ContentPrefs are currently broken under multiprocess firefox. Bug 1027898
-    // Skip this custom pref option for now in e10s
-    return  NS_ERROR_FAILURE;
-  }
-
   nsresult rv;
 
   nsCOMPtr<nsIURI> docUri;
   rv = GetDocumentURI(aEditor, getter_AddRefs(docUri));
   NS_ENSURE_SUCCESS(rv, rv);
 
   nsAutoCString docUriSpec;
   rv = docUri->GetSpec(docUriSpec);
@@ -707,61 +700,58 @@ nsEditorSpellCheck::UpdateCurrentDiction
 
   DictionaryFetcher* fetcher = new DictionaryFetcher(this, aCallback,
                                                      mDictionaryFetcherGroup);
   rootContent->GetLang(fetcher->mRootContentLang);
   nsCOMPtr<nsIDocument> doc = rootContent->GetCurrentDoc();
   NS_ENSURE_STATE(doc);
   doc->GetContentLanguage(fetcher->mRootDocContentLang);
 
-  if (XRE_GetProcessType() == GeckoProcessType_Content) {
-    DictionaryFetched(nullptr);
-  }
-
   rv = fetcher->Fetch(mEditor);
   NS_ENSURE_SUCCESS(rv, rv);
 
   return NS_OK;
 }
 
 nsresult
 nsEditorSpellCheck::DictionaryFetched(DictionaryFetcher* aFetcher)
 {
   nsRefPtr<nsEditorSpellCheck> kungFuDeathGrip = this;
-  nsAutoString dictName;
+
   nsresult rv = NS_OK;
-  if (aFetcher) {
-    // Important: declare the holder after the callback caller so that the former
-    // is destructed first so that it's not active when the callback is called.
-    CallbackCaller callbackCaller(aFetcher->mCallback);
-    UpdateDictionnaryHolder holder(this);
+
+  // Important: declare the holder after the callback caller so that the former
+  // is destructed first so that it's not active when the callback is called.
+  CallbackCaller callbackCaller(aFetcher->mCallback);
+  UpdateDictionnaryHolder holder(this);
 
-    if (aFetcher->mGroup < mDictionaryFetcherGroup) {
-      // SetCurrentDictionary was called after the fetch started.  Don't overwrite
-      // that dictionary with the fetched one.
-      return NS_OK;
-    }
+  if (aFetcher->mGroup < mDictionaryFetcherGroup) {
+    // SetCurrentDictionary was called after the fetch started.  Don't overwrite
+    // that dictionary with the fetched one.
+    return NS_OK;
+  }
 
-    mPreferredLang.Assign(aFetcher->mRootContentLang);
+  mPreferredLang.Assign(aFetcher->mRootContentLang);
 
-    // If we successfully fetched a dictionary from content prefs, do not go
-    // further. Use this exact dictionary.
-    dictName.Assign(aFetcher->mDictionary);
-    if (!dictName.IsEmpty()) {
-      if (NS_FAILED(SetCurrentDictionary(dictName))) { 
-        // may be dictionary was uninstalled ?
-        ClearCurrentDictionary(mEditor);
-      }
-      return NS_OK;
+  // If we successfully fetched a dictionary from content prefs, do not go
+  // further. Use this exact dictionary.
+  nsAutoString dictName;
+  dictName.Assign(aFetcher->mDictionary);
+  if (!dictName.IsEmpty()) {
+    if (NS_FAILED(SetCurrentDictionary(dictName))) { 
+      // may be dictionary was uninstalled ?
+      ClearCurrentDictionary(mEditor);
     }
+    return NS_OK;
+  }
 
-    if (mPreferredLang.IsEmpty()) {
-      mPreferredLang.Assign(aFetcher->mRootDocContentLang);
-    }
+  if (mPreferredLang.IsEmpty()) {
+    mPreferredLang.Assign(aFetcher->mRootDocContentLang);
   }
+
   // Then, try to use language computed from element
   if (!mPreferredLang.IsEmpty()) {
     dictName.Assign(mPreferredLang);
   }
 
   // otherwise, get language from preferences
   nsAutoString preferedDict(Preferences::GetLocalizedString("spellchecker.dictionary"));
   // Replace '_' with '-' in case the user has an underscore stored in their
deleted file mode 100644
--- a/extensions/spellcheck/hunspell/src/PRemoteSpellcheckEngine.ipdl
+++ /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 protocol PContent;
-
-namespace mozilla {
-
-sync protocol PRemoteSpellcheckEngine {
-  manager PContent;
-
-parent:
-  __delete__();
-
-  sync CheckForMisspelling(nsString aWord) returns (bool isMisspelled);
-
-  sync SetDictionary(nsString aDictionary) returns (bool success);
-};
-
-} // namespace mozilla
deleted file mode 100644
--- a/extensions/spellcheck/hunspell/src/RemoteSpellCheckEngineChild.cpp
+++ /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/. */
-
-#include "RemoteSpellcheckEngineChild.h"
-
-namespace mozilla {
-
-RemoteSpellcheckEngineChild::RemoteSpellcheckEngineChild()
-{
-}
-
-RemoteSpellcheckEngineChild::~RemoteSpellcheckEngineChild()
-{
-}
-
-} //namespace mozilla
deleted file mode 100644
--- a/extensions/spellcheck/hunspell/src/RemoteSpellCheckEngineChild.h
+++ /dev/null
@@ -1,21 +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/. */
-
-#ifndef RemoteSpellcheckEngineChild_h_
-#define RemoteSpellcheckEngineChild_h_
-
-#include "mozilla/PRemoteSpellcheckEngineChild.h"
-
-namespace mozilla {
-class RemoteSpellcheckEngineChild : public mozilla::PRemoteSpellcheckEngineChild
-{
-public:
-  RemoteSpellcheckEngineChild();
-
-  ~RemoteSpellcheckEngineChild();
-};
-
-} //namespace mozilla
-
-#endif // RemoteSpellcheckEngineChild_h_
deleted file mode 100644
--- a/extensions/spellcheck/hunspell/src/RemoteSpellCheckEngineParent.cpp
+++ /dev/null
@@ -1,49 +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 "RemoteSpellcheckEngineParent.h"
-#include "mozISpellCheckingEngine.h"
-#include "nsServiceManagerUtils.h"
-
-#define DEFAULT_SPELL_CHECKER "@mozilla.org/spellchecker/engine;1"
-
-namespace mozilla {
-
-RemoteSpellcheckEngineParent::RemoteSpellcheckEngineParent()
-{
-  mEngine = do_GetService(DEFAULT_SPELL_CHECKER);
-}
-
-RemoteSpellcheckEngineParent::~RemoteSpellcheckEngineParent()
-{
-}
-
-bool
-RemoteSpellcheckEngineParent::RecvSetDictionary(
-  const nsString& aDictionary,
-  bool* success)
-{
-  nsresult rv = mEngine->SetDictionary(aDictionary.get());
-  *success = NS_SUCCEEDED(rv);
-  return true;
-}
-
-bool
-RemoteSpellcheckEngineParent::RecvCheckForMisspelling(
-  const nsString& aWord,
-  bool* isMisspelled)
-{
-  bool isCorrect = false;
-  mEngine->Check(aWord.get(), &isCorrect);
-  *isMisspelled = !isCorrect;
-  return true;
-}
-
-void
-RemoteSpellcheckEngineParent::ActorDestroy(ActorDestroyReason aWhy)
-{
-}
-
-} // namespace mozilla
-
deleted file mode 100644
--- a/extensions/spellcheck/hunspell/src/RemoteSpellCheckEngineParent.h
+++ /dev/null
@@ -1,31 +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/. */
-#ifndef RemoteSpellcheckEngineParent_h_
-#define RemoteSpellcheckEngineParent_h_
-
-#include "mozISpellCheckingEngine.h"
-#include "mozilla/PRemoteSpellcheckEngineParent.h"
-#include "nsCOMPtr.h"
-
-namespace mozilla {
-
-class RemoteSpellcheckEngineParent : public mozilla::PRemoteSpellcheckEngineParent {
-
-public:
-  RemoteSpellcheckEngineParent();
-
-  ~RemoteSpellcheckEngineParent();
-
-  virtual void ActorDestroy(ActorDestroyReason aWhy);
-
-  bool RecvSetDictionary(const nsString& aDictionary, bool* success);
-
-  bool RecvCheckForMisspelling( const nsString& aWord, bool* isMisspelled);
-
-private:
-  nsCOMPtr<mozISpellCheckingEngine> mEngine;
-};
-
-}
-#endif
--- a/extensions/spellcheck/hunspell/src/moz.build
+++ b/extensions/spellcheck/hunspell/src/moz.build
@@ -1,19 +1,17 @@
 # -*- 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/.
 
-SOURCES += [
+UNIFIED_SOURCES += [
     'mozHunspell.cpp',
     'mozHunspellDirProvider.cpp',
-    'RemoteSpellCheckEngineChild.cpp',
-    'RemoteSpellCheckEngineParent.cpp',
 ]
 
 if not CONFIG['MOZ_NATIVE_HUNSPELL']:
     SOURCES += [
         'affentry.cxx',
         'affixmgr.cxx',
         'csutil.cxx',
         'dictmgr.cxx',
@@ -37,19 +35,8 @@ LOCAL_INCLUDES += [
 
 LOCAL_INCLUDES += [
     '/editor/libeditor/base',
 ]
 
 # Suppress warnings in third-party code.
 if CONFIG['CLANG_CXX']:
     CXXFLAGS += ['-Wno-unused-private-field']
-
-include('/ipc/chromium/chromium-config.mozbuild')
-
-IPDL_SOURCES = [
-    'PRemoteSpellcheckEngine.ipdl',
-]
-
-EXPORTS.mozilla += [
-     'RemoteSpellCheckEngineChild.h',
-     'RemoteSpellCheckEngineParent.h',
-]
--- a/extensions/spellcheck/src/moz.build
+++ b/extensions/spellcheck/src/moz.build
@@ -1,16 +1,15 @@
 # -*- 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/.
 
-include('/ipc/chromium/chromium-config.mozbuild')
-SOURCES += [
+UNIFIED_SOURCES += [
     'mozEnglishWordUtils.cpp',
     'mozGenericWordUtils.cpp',
     'mozInlineSpellChecker.cpp',
     'mozInlineSpellWordUtil.cpp',
     'mozPersonalDictionary.cpp',
     'mozSpellChecker.cpp',
     'mozSpellCheckerFactory.cpp',
     'mozSpellI18NManager.cpp',
--- a/extensions/spellcheck/src/mozInlineSpellChecker.cpp
+++ b/extensions/spellcheck/src/mozInlineSpellChecker.cpp
@@ -1973,22 +1973,16 @@ NS_IMETHODIMP mozInlineSpellChecker::Upd
   // checker is being initialized.  Calling UpdateCurrentDictionary on
   // mPendingSpellCheck simply queues the dictionary update after the init.
   nsCOMPtr<nsIEditorSpellCheck> spellCheck = mSpellCheck ? mSpellCheck :
                                              mPendingSpellCheck;
   if (!spellCheck) {
     return NS_OK;
   }
 
-  if (XRE_GetProcessType() == GeckoProcessType_Content) {
-    mNumPendingUpdateCurrentDictionary++;
-    ChangeNumPendingSpellChecks(1);
-    return NS_OK;
-  }
-
   if (NS_FAILED(spellCheck->GetCurrentDictionary(mPreviousDictionary))) {
     mPreviousDictionary.Truncate();
   }
 
   nsRefPtr<UpdateCurrentDictionaryCallback> cb =
     new UpdateCurrentDictionaryCallback(this, mDisabledAsyncToken);
   NS_ENSURE_STATE(cb);
   nsresult rv = spellCheck->UpdateCurrentDictionary(cb);
--- a/extensions/spellcheck/src/mozSpellChecker.cpp
+++ b/extensions/spellcheck/src/mozSpellChecker.cpp
@@ -5,22 +5,16 @@
 
 #include "mozSpellChecker.h"
 #include "nsIServiceManager.h"
 #include "mozISpellI18NManager.h"
 #include "nsIStringEnumerator.h"
 #include "nsICategoryManager.h"
 #include "nsISupportsPrimitives.h"
 #include "nsISimpleEnumerator.h"
-#include "mozilla/PRemoteSpellcheckEngineChild.h"
-#include "mozilla/dom/ContentChild.h"
-#include "nsXULAppAPI.h"
-
-using mozilla::dom::ContentChild;
-using mozilla::PRemoteSpellcheckEngineChild;
 
 #define DEFAULT_SPELL_CHECKER "@mozilla.org/spellchecker/engine;1"
 
 NS_IMPL_CYCLE_COLLECTING_ADDREF(mozSpellChecker)
 NS_IMPL_CYCLE_COLLECTING_RELEASE(mozSpellChecker)
 
 NS_INTERFACE_MAP_BEGIN(mozSpellChecker)
   NS_INTERFACE_MAP_ENTRY(nsISpellChecker)
@@ -39,33 +33,24 @@ mozSpellChecker::mozSpellChecker()
 mozSpellChecker::~mozSpellChecker()
 {
   if(mPersonalDictionary){
     //    mPersonalDictionary->Save();
     mPersonalDictionary->EndSession();
   }
   mSpellCheckingEngine = nullptr;
   mPersonalDictionary = nullptr;
-
-  if(XRE_GetProcessType() == GeckoProcessType_Content) {
-    mEngine->Send__delete__(mEngine);
-  }
 }
 
 nsresult 
 mozSpellChecker::Init()
 {
   mPersonalDictionary = do_GetService("@mozilla.org/spellchecker/personaldictionary;1");
   
   mSpellCheckingEngine = nullptr;
-  if (XRE_GetProcessType() == GeckoProcessType_Content) {
-    mozilla::dom::ContentChild* contentChild = mozilla::dom::ContentChild::GetSingleton();
-    MOZ_ASSERT(contentChild);
-    mEngine = contentChild->SendPRemoteSpellcheckEngineConstructor();
-  }
 
   return NS_OK;
 } 
 
 NS_IMETHODIMP 
 mozSpellChecker::SetDocument(nsITextServicesDocument *aDoc, bool aFromStartofDoc)
 {
   mTsDoc = aDoc;
@@ -118,22 +103,16 @@ mozSpellChecker::NextMisspelledWord(nsAS
   return NS_OK;
 }
 
 NS_IMETHODIMP 
 mozSpellChecker::CheckWord(const nsAString &aWord, bool *aIsMisspelled, nsTArray<nsString> *aSuggestions)
 {
   nsresult result;
   bool correct;
-  if (XRE_GetProcessType() == GeckoProcessType_Content) {
-    nsString wordwrapped = nsString(aWord);
-    mEngine->SendCheckForMisspelling(wordwrapped, aIsMisspelled);
-    return NS_OK;
-  }
-
   if(!mSpellCheckingEngine)
     return NS_ERROR_NULL_POINTER;
 
   *aIsMisspelled = false;
   result = mSpellCheckingEngine->Check(PromiseFlatString(aWord).get(), &correct);
   NS_ENSURE_SUCCESS(result, result);
   if(!correct){
     if(aSuggestions){
@@ -348,23 +327,16 @@ mozSpellChecker::GetCurrentDictionary(ns
   mSpellCheckingEngine->GetDictionary(getter_Copies(dictname));
   aDictionary = dictname;
   return NS_OK;
 }
 
 NS_IMETHODIMP 
 mozSpellChecker::SetCurrentDictionary(const nsAString &aDictionary)
 {
-  if (XRE_GetProcessType() == GeckoProcessType_Content) {
-    nsString wrappedDict = nsString(aDictionary);
-    bool isSuccess;
-    mEngine->SendSetDictionary(wrappedDict, &isSuccess);
-    return isSuccess ? NS_OK : NS_ERROR_NOT_AVAILABLE;
-  }
-
   // Calls to mozISpellCheckingEngine::SetDictionary might destroy us
   nsRefPtr<mozSpellChecker> kungFuDeathGrip = this;
 
   mSpellCheckingEngine = nullptr;
 
   if (aDictionary.IsEmpty()) {
     return NS_OK;
   }
--- a/extensions/spellcheck/src/mozSpellChecker.h
+++ b/extensions/spellcheck/src/mozSpellChecker.h
@@ -13,20 +13,16 @@
 #include "nsITextServicesDocument.h"
 #include "mozIPersonalDictionary.h"
 #include "mozISpellCheckingEngine.h"
 #include "nsClassHashtable.h"
 #include "nsTArray.h"
 #include "mozISpellI18NUtil.h"
 #include "nsCycleCollectionParticipant.h"
 
-namespace mozilla {
-class PRemoteSpellcheckEngineChild;
-}
-
 class mozSpellChecker : public nsISpellChecker
 {
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_CLASS(mozSpellChecker)
 
   mozSpellChecker();
 
@@ -58,12 +54,10 @@ protected:
   nsCOMPtr<mozISpellCheckingEngine>  mSpellCheckingEngine;
   bool mFromStart;
 
   nsresult SetupDoc(int32_t *outBlockOffset);
 
   nsresult GetCurrentBlockIndex(nsITextServicesDocument *aDoc, int32_t *outBlockIndex);
 
   nsresult GetEngineList(nsCOMArray<mozISpellCheckingEngine> *aDictionaryList);
-
-  mozilla::PRemoteSpellcheckEngineChild *mEngine;
 };
 #endif // mozSpellChecker_h__
--- a/toolkit/content/widgets/textbox.xml
+++ b/toolkit/content/widgets/textbox.xml
@@ -533,17 +533,17 @@
         <xul:menuitem label="&cutCmd.label;" accesskey="&cutCmd.accesskey;" cmd="cmd_cut"/>
         <xul:menuitem label="&copyCmd.label;" accesskey="&copyCmd.accesskey;" cmd="cmd_copy"/>
         <xul:menuitem label="&pasteCmd.label;" accesskey="&pasteCmd.accesskey;" cmd="cmd_paste"/>
         <xul:menuitem label="&deleteCmd.label;" accesskey="&deleteCmd.accesskey;" cmd="cmd_delete"/>
         <xul:menuseparator/>
         <xul:menuitem label="&selectAllCmd.label;" accesskey="&selectAllCmd.accesskey;" cmd="cmd_selectAll"/>
         <xul:menuseparator anonid="spell-check-separator"/>
         <xul:menuitem label="&spellCheckToggle.label;" type="checkbox" accesskey="&spellCheckToggle.accesskey;" anonid="spell-check-enabled"
-                      oncommand="this.parentNode.parentNode.spellCheckerUI.toggleEnabled(window);"/>
+                      oncommand="this.parentNode.parentNode.spellCheckerUI.toggleEnabled();"/>
         <xul:menu label="&spellDictionaries.label;" accesskey="&spellDictionaries.accesskey;" anonid="spell-dictionaries">
           <xul:menupopup anonid="spell-dictionaries-menu"
                          onpopupshowing="event.stopPropagation();"
                          onpopuphiding="event.stopPropagation();"/>
         </xul:menu>
       </xul:menupopup>
     </content>
 
--- a/toolkit/modules/InlineSpellChecker.jsm
+++ b/toolkit/modules/InlineSpellChecker.jsm
@@ -180,17 +180,17 @@ InlineSpellChecker.prototype = {
       var item = menu.ownerDocument.createElement("menuitem");
       item.setAttribute("id", "spell-check-dictionary-" + sortedList[i].id);
       item.setAttribute("label", sortedList[i].label);
       item.setAttribute("type", "radio");
       this.mDictionaryItems.push(item);
       if (curlang == sortedList[i].id) {
         item.setAttribute("checked", "true");
       } else {
-        var callback = function(me, val) { return function(evt) { me.selectDictionary(val, me.menu.ownerDocument.defaultView); } };
+        var callback = function(me, val) { return function(evt) { me.selectDictionary(val); } };
         item.addEventListener("command", callback(this, i), true);
       }
       if (insertBefore)
         menu.insertBefore(item, insertBefore);
       else
         menu.appendChild(item);
     }
     return list.length;
@@ -261,30 +261,18 @@ InlineSpellChecker.prototype = {
   {
     for (var i = 0; i < this.mDictionaryItems.length; i ++) {
       this.mDictionaryMenu.removeChild(this.mDictionaryItems[i]);
     }
     this.mDictionaryItems = [];
   },
 
   // callback for selecting a dictionary
-  selectDictionary: function(index, aWindow)
+  selectDictionary: function(index)
   {
-    // Avoid a crash in multiprocess until Bug 1030451 lands
-    // Remove aWindow parameter at that time
-    const Ci = Components.interfaces;
-    let chromeFlags = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).
-                                  getInterface(Ci.nsIWebNavigation).
-                                  QueryInterface(Ci.nsIDocShellTreeItem).treeOwner.
-                                  QueryInterface(Ci.nsIInterfaceRequestor).
-                                  getInterface(Ci.nsIXULWindow).chromeFlags;
-    let chromeRemoteWindow = Ci.nsIWebBrowserChrome.CHROME_REMOTE_WINDOW;
-    if (chromeFlags & chromeRemoteWindow) {
-      return;
-    }
     if (! this.mInlineSpellChecker || index < 0 || index >= this.mDictionaryNames.length)
       return;
     var spellchecker = this.mInlineSpellChecker.spellChecker;
     spellchecker.SetCurrentDictionary(this.mDictionaryNames[index]);
     this.mInlineSpellChecker.spellCheckRange(null); // causes recheck
   },
 
   // callback for selecting a suggesteed replacement
@@ -294,30 +282,18 @@ InlineSpellChecker.prototype = {
       return;
     if (index < 0 || index >= this.mSpellSuggestions.length)
       return;
     this.mInlineSpellChecker.replaceWord(this.mWordNode, this.mWordOffset,
                                          this.mSpellSuggestions[index]);
   },
 
   // callback for enabling or disabling spellchecking
-  toggleEnabled: function(aWindow)
+  toggleEnabled: function()
   {
-    // Avoid a crash in multiprocess until Bug 1030451 lands
-    // Remove aWindow parameter at that time
-    const Ci = Components.interfaces;
-    let chromeFlags = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).
-                                  getInterface(Ci.nsIWebNavigation).
-                                  QueryInterface(Ci.nsIDocShellTreeItem).treeOwner.
-                                  QueryInterface(Ci.nsIInterfaceRequestor).
-                                  getInterface(Ci.nsIXULWindow).chromeFlags;
-    let chromeRemoteWindow = Ci.nsIWebBrowserChrome.CHROME_REMOTE_WINDOW;
-    if (chromeFlags & chromeRemoteWindow) {
-      return;
-    }
     this.mEditor.setSpellcheckUserOverride(!this.mInlineSpellChecker.enableRealTimeSpell);
   },
 
   // callback for adding the current misspelling to the user-defined dictionary
   addToDictionary: function()
   {
     // Prevent the undo stack from growing over the max depth
     if (this.mAddedWordStack.length == MAX_UNDO_STACK_DEPTH)