From 13f505539c5c0deff72cc1c007eaa9be1979d294 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Fri, 13 Nov 2020 13:33:08 +0000 Subject: Issue #1682 - Remove vibrator DOM interface and support code. Resolves #1682 --- hal/Hal.cpp | 79 -------------------------------------- hal/Hal.h | 35 ----------------- hal/fallback/FallbackVibration.cpp | 22 ----------- hal/moz.build | 5 --- hal/sandbox/PHal.ipdl | 3 -- hal/sandbox/SandboxHal.cpp | 52 ------------------------- 6 files changed, 196 deletions(-) delete mode 100644 hal/fallback/FallbackVibration.cpp (limited to 'hal') diff --git a/hal/Hal.cpp b/hal/Hal.cpp index f0167f575..88c1fa50b 100644 --- a/hal/Hal.cpp +++ b/hal/Hal.cpp @@ -94,87 +94,8 @@ WindowIsActive(nsPIDOMWindowInner* aWindow) return !document->Hidden(); } -StaticAutoPtr gLastIDToVibrate; - -void InitLastIDToVibrate() -{ - gLastIDToVibrate = new WindowIdentifier::IDArrayType(); - ClearOnShutdown(&gLastIDToVibrate); -} - } // namespace -void -Vibrate(const nsTArray& pattern, nsPIDOMWindowInner* window) -{ - Vibrate(pattern, WindowIdentifier(window)); -} - -void -Vibrate(const nsTArray& pattern, const WindowIdentifier &id) -{ - AssertMainThread(); - - // Only active windows may start vibrations. If |id| hasn't gone - // through the IPC layer -- that is, if our caller is the outside - // world, not hal_proxy -- check whether the window is active. If - // |id| has gone through IPC, don't check the window's visibility; - // only the window corresponding to the bottommost process has its - // visibility state set correctly. - if (!id.HasTraveledThroughIPC() && !WindowIsActive(id.GetWindow())) { - HAL_LOG("Vibrate: Window is inactive, dropping vibrate."); - return; - } - - if (!InSandbox()) { - if (!gLastIDToVibrate) { - InitLastIDToVibrate(); - } - *gLastIDToVibrate = id.AsArray(); - } - - // Don't forward our ID if we are not in the sandbox, because hal_impl - // doesn't need it, and we don't want it to be tempted to read it. The - // empty identifier will assert if it's used. - PROXY_IF_SANDBOXED(Vibrate(pattern, InSandbox() ? id : WindowIdentifier())); -} - -void -CancelVibrate(nsPIDOMWindowInner* window) -{ - CancelVibrate(WindowIdentifier(window)); -} - -void -CancelVibrate(const WindowIdentifier &id) -{ - AssertMainThread(); - - // Although only active windows may start vibrations, a window may - // cancel its own vibration even if it's no longer active. - // - // After a window is marked as inactive, it sends a CancelVibrate - // request. We want this request to cancel a playing vibration - // started by that window, so we certainly don't want to reject the - // cancellation request because the window is now inactive. - // - // But it could be the case that, after this window became inactive, - // some other window came along and started a vibration. We don't - // want this window's cancellation request to cancel that window's - // actively-playing vibration! - // - // To solve this problem, we keep track of the id of the last window - // to start a vibration, and only accepts cancellation requests from - // the same window. All other cancellation requests are ignored. - - if (InSandbox() || (gLastIDToVibrate && *gLastIDToVibrate == id.AsArray())) { - // Don't forward our ID if we are not in the sandbox, because hal_impl - // doesn't need it, and we don't want it to be tempted to read it. The - // empty identifier will assert if it's used. - PROXY_IF_SANDBOXED(CancelVibrate(InSandbox() ? id : WindowIdentifier())); - } -} - template class ObserversManager { diff --git a/hal/Hal.h b/hal/Hal.h index e2e571790..ced295ca4 100644 --- a/hal/Hal.h +++ b/hal/Hal.h @@ -50,41 +50,6 @@ typedef Observer SystemTimezoneChangeObserver; namespace MOZ_HAL_NAMESPACE { -/** - * Turn the default vibrator device on/off per the pattern specified - * by |pattern|. Each element in the pattern is the number of - * milliseconds to turn the vibrator on or off. The first element in - * |pattern| is an "on" element, the next is "off", and so on. - * - * If |pattern| is empty, any in-progress vibration is canceled. - * - * Only an active window within an active tab may call Vibrate; calls - * from inactive windows and windows on inactive tabs do nothing. - * - * If you're calling hal::Vibrate from the outside world, pass an - * nsIDOMWindow* in place of the WindowIdentifier parameter. - * The method with WindowIdentifier will be called automatically. - */ -void Vibrate(const nsTArray& pattern, - nsPIDOMWindowInner* aWindow); -void Vibrate(const nsTArray& pattern, - const hal::WindowIdentifier &id); - -/** - * Cancel a vibration started by the content window identified by - * WindowIdentifier. - * - * If the window was the last window to start a vibration, the - * cancellation request will go through even if the window is not - * active. - * - * As with hal::Vibrate(), if you're calling hal::CancelVibrate from the outside - * world, pass an nsIDOMWindow*. The method with WindowIdentifier will be called - * automatically. - */ -void CancelVibrate(nsPIDOMWindowInner* aWindow); -void CancelVibrate(const hal::WindowIdentifier &id); - /** * Determine whether the device's screen is currently enabled. */ diff --git a/hal/fallback/FallbackVibration.cpp b/hal/fallback/FallbackVibration.cpp deleted file mode 100644 index 57379646d..000000000 --- a/hal/fallback/FallbackVibration.cpp +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* 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 "Hal.h" - -using mozilla::hal::WindowIdentifier; - -namespace mozilla { -namespace hal_impl { - -void -Vibrate(const nsTArray& pattern, const hal::WindowIdentifier &) -{} - -void -CancelVibrate(const hal::WindowIdentifier &) -{} - -} // namespace hal_impl -} // namespace mozilla diff --git a/hal/moz.build b/hal/moz.build index 84c017f08..fefd56fcf 100644 --- a/hal/moz.build +++ b/hal/moz.build @@ -29,7 +29,6 @@ if CONFIG['OS_TARGET'] == 'Linux': 'fallback/FallbackAlarm.cpp', 'fallback/FallbackScreenConfiguration.cpp', 'fallback/FallbackSensor.cpp', - 'fallback/FallbackVibration.cpp', 'linux/LinuxMemory.cpp', 'linux/LinuxPower.cpp', ] @@ -39,7 +38,6 @@ elif CONFIG['OS_TARGET'] == 'WINNT': 'fallback/FallbackMemory.cpp', 'fallback/FallbackPower.cpp', 'fallback/FallbackScreenConfiguration.cpp', - 'fallback/FallbackVibration.cpp', 'windows/WindowsSensor.cpp', ] elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': @@ -48,7 +46,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': 'fallback/FallbackMemory.cpp', 'fallback/FallbackPower.cpp', 'fallback/FallbackScreenConfiguration.cpp', - 'fallback/FallbackVibration.cpp', ] elif CONFIG['OS_TARGET'] in ('OpenBSD', 'NetBSD', 'FreeBSD', 'DragonFly'): UNIFIED_SOURCES += [ @@ -57,7 +54,6 @@ elif CONFIG['OS_TARGET'] in ('OpenBSD', 'NetBSD', 'FreeBSD', 'DragonFly'): 'fallback/FallbackPower.cpp', 'fallback/FallbackScreenConfiguration.cpp', 'fallback/FallbackSensor.cpp', - 'fallback/FallbackVibration.cpp', ] else: UNIFIED_SOURCES += [ @@ -66,7 +62,6 @@ else: 'fallback/FallbackPower.cpp', 'fallback/FallbackScreenConfiguration.cpp', 'fallback/FallbackSensor.cpp', - 'fallback/FallbackVibration.cpp', ] UNIFIED_SOURCES += [ diff --git a/hal/sandbox/PHal.ipdl b/hal/sandbox/PHal.ipdl index cfd021c10..5fa2b2b97 100644 --- a/hal/sandbox/PHal.ipdl +++ b/hal/sandbox/PHal.ipdl @@ -69,9 +69,6 @@ child: async NotifySystemTimezoneChange(SystemTimezoneChangeInformation aSystemTimezoneChangeInfo); parent: - async Vibrate(uint32_t[] pattern, uint64_t[] id, PBrowser browser); - async CancelVibrate(uint64_t[] id, PBrowser browser); - async EnableNetworkNotifications(); async DisableNetworkNotifications(); sync GetCurrentNetworkInformation() diff --git a/hal/sandbox/SandboxHal.cpp b/hal/sandbox/SandboxHal.cpp index fd84f7c39..9a214f085 100644 --- a/hal/sandbox/SandboxHal.cpp +++ b/hal/sandbox/SandboxHal.cpp @@ -45,28 +45,6 @@ Hal() return sHal; } -void -Vibrate(const nsTArray& pattern, const WindowIdentifier &id) -{ - HAL_LOG("Vibrate: Sending to parent process."); - - AutoTArray p(pattern); - - WindowIdentifier newID(id); - newID.AppendProcessID(); - Hal()->SendVibrate(p, newID.AsArray(), TabChild::GetFrom(newID.GetWindow())); -} - -void -CancelVibrate(const WindowIdentifier &id) -{ - HAL_LOG("CancelVibrate: Sending to parent process."); - - WindowIdentifier newID(id); - newID.AppendProcessID(); - Hal()->SendCancelVibrate(newID.AsArray(), TabChild::GetFrom(newID.GetWindow())); -} - void EnableNetworkNotifications() { @@ -379,36 +357,6 @@ public: hal::UnregisterSystemTimezoneChangeObserver(this); } - virtual bool - RecvVibrate(InfallibleTArray&& pattern, - InfallibleTArray&& id, - PBrowserParent *browserParent) override - { - // We give all content vibration permission. - // TabParent *tabParent = TabParent::GetFrom(browserParent); - /* xxxkhuey wtf - nsCOMPtr window = - do_QueryInterface(tabParent->GetBrowserDOMWindow()); - */ - WindowIdentifier newID(id, nullptr); - hal::Vibrate(pattern, newID); - return true; - } - - virtual bool - RecvCancelVibrate(InfallibleTArray &&id, - PBrowserParent *browserParent) override - { - //TabParent *tabParent = TabParent::GetFrom(browserParent); - /* XXXkhuey wtf - nsCOMPtr window = - tabParent->GetBrowserDOMWindow(); - */ - WindowIdentifier newID(id, nullptr); - hal::CancelVibrate(newID); - return true; - } - virtual bool RecvEnableNetworkNotifications() override { // We give all content access to this network-status information. -- cgit v1.2.3