Commit 26808081 authored by Bogdan Tara's avatar Bogdan Tara
Browse files

Merge mozilla-central to inbound. a=merge CLOSED TREE

parents 32c3cc16 e3282a1f
Loading
Loading
Loading
Loading
+1 −10
Original line number Diff line number Diff line
@@ -276,14 +276,6 @@ dependencies = [
 "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
]

[[package]]
name = "core-foundation-sys"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
]

[[package]]
name = "core-foundation-sys"
version = "0.5.1"
@@ -1903,7 +1895,7 @@ version = "0.1.0"
dependencies = [
 "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "boxfnonce 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
 "core-foundation-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
 "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
 "libudev 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2248,7 +2240,6 @@ dependencies = [
"checksum cmake 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "56d741ea7a69e577f6d06b36b7dff4738f680593dc27a701ffa8506b73ce28bb"
"checksum cookie 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "746858cae4eae40fff37e1998320068df317bc247dc91a67c6cfa053afdc2abb"
"checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980"
"checksum core-foundation-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "41115a6aa5d3e1e5ef98148373f25971d1fad53818553f216495f9e67e90a624"
"checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa"
"checksum core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb0ed45fdc32f9ab426238fba9407dfead7bacd7900c9b4dd3f396f46eafdae3"
"checksum core-text 9.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd581c37283d0c23311d179aefbb891f2324ee0405da58a26e8594ab76e5748"
+7 −0
Original line number Diff line number Diff line
@@ -464,6 +464,13 @@ HandlerProvider::MarshalAs(REFIID aIid)
  return aIid;
}

HRESULT
HandlerProvider::DisconnectHandlerRemotes()
{
  IUnknown* unk = static_cast<IGeckoBackChannel*>(this);
  return ::CoDisconnectObject(unk, 0);
}

REFIID
HandlerProvider::GetEffectiveOutParamIid(REFIID aCallIid,
                                         ULONG aCallMethod)
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ public:
  STDMETHODIMP WriteHandlerPayload(NotNull<mscom::IInterceptor*> aInterceptor,
                                   NotNull<IStream*> aStream) override;
  STDMETHODIMP_(REFIID) MarshalAs(REFIID aIid) override;
  STDMETHODIMP DisconnectHandlerRemotes() override;
  STDMETHODIMP_(REFIID) GetEffectiveOutParamIid(REFIID aCallIid,
                                                ULONG aCallMethod) override;
  STDMETHODIMP NewInstance(REFIID aIid,
+19 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@
#include "mozilla/ReverseIterator.h"
#include "nsIXULRuntime.h"
#include "mozilla/mscom/AsyncInvoker.h"
#include "mozilla/mscom/Interceptor.h"

#include "oleacc.h"

@@ -103,6 +104,24 @@ AccessibleWrap::Shutdown()
    }
  }

  if (XRE_IsContentProcess()) {
    // Bug 1434822: To improve performance for cross-process COM, we disable COM
    // garbage collection. However, this means we never receive Release calls
    // from clients, so defunct accessibles can never be deleted. Since we
    // know when an accessible is shutting down, we can work around this by
    // forcing COM to disconnect this object from all of its remote clients,
    // which will cause associated references to be released.
    IUnknown* unk = static_cast<IAccessible*>(this);
    mscom::Interceptor::DisconnectRemotesForTarget(unk);
    // If an accessible was retrieved via IAccessibleHypertext::hyperlink*,
    // it will have a different Interceptor that won't be matched by the above
    // call, even though it's the same object. Therefore, call it again with
    // the IAccessibleHyperlink pointer. We can remove this horrible hack once
    // bug 1440267 is fixed.
    unk = static_cast<IAccessibleHyperlink*>(this);
    mscom::Interceptor::DisconnectRemotesForTarget(unk);
  }

  Accessible::Shutdown();
}

+1 −1
Original line number Diff line number Diff line
@@ -565,7 +565,7 @@ var gSync = {
    const state = UIState.get();
    if (state.status == UIState.STATUS_SIGNED_IN) {
      this.updateSyncStatus({ syncing: true });
      setTimeout(() => Weave.Service.errorHandler.syncAndReportErrors(), 0);
      Services.tm.dispatchToMainThread(() => Weave.Service.sync());
    }
  },

Loading