Previously, the ILocation COM object ran in the main process. Due to a race condition, it would sometimes crash the process so we are moving it to a utility process, where it can crash safely. The old WindowsLocationProvider class has become a proxy that forwards requests to the child process via the PWindowsLocation parent actor. The PWindowsLocationChild executes the requests and sends the results back. Failures in ILocation (like geolocation being off in Windows settings) are sent back as well -- they will cause the WindowsLocationProvider to start the MLS geolocation fallback, as they did before. Additionally, this patch caches the accuracy setting in order to guarantee the proper accuracy is set when requesting reports. Previously, we called SetHighAccuracy too early and it was silently not set (bug 1773456). Depends on D155019 Differential Revision: https://phabricator.services.mozilla.com/D155020
31 lines
984 B
C++
31 lines
984 B
C++
/* -*- 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_WindowsUtilsChild_h__
|
|
#define mozilla_dom_WindowsUtilsChild_h__
|
|
|
|
#include "mozilla/dom/PWindowsUtilsChild.h"
|
|
#include "mozilla/dom/WindowsLocationChild.h"
|
|
|
|
namespace mozilla::dom {
|
|
|
|
// Manager for utilities in the WindowsUtils utility process.
|
|
class WindowsUtilsChild final : public PWindowsUtilsChild {
|
|
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(WindowsUtilsChild, override);
|
|
|
|
public:
|
|
already_AddRefed<PWindowsLocationChild> AllocPWindowsLocationChild() {
|
|
return MakeAndAddRef<WindowsLocationChild>();
|
|
}
|
|
|
|
protected:
|
|
~WindowsUtilsChild() = default;
|
|
};
|
|
|
|
} // namespace mozilla::dom
|
|
|
|
#endif // mozilla_dom_WindowsUtilsChild_h__
|