[tbb-commits] [tor-browser/tor-browser-52.1.0esr-7.0-2] Bug 10286: Touch API fingerprinting resistance

gk at torproject.org gk at torproject.org
Fri May 12 07:21:51 UTC 2017


commit 331f089d6b6ba62463d8362d7ca01641a4cc92dc
Author: Arthur Edelstein <arthuredelstein at gmail.com>
Date:   Mon Apr 24 08:18:25 2017 -0700

    Bug 10286: Touch API fingerprinting resistance
---
 dom/events/Touch.cpp |  7 +++++++
 dom/events/Touch.h   | 16 ++++++++++------
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/dom/events/Touch.cpp b/dom/events/Touch.cpp
index a538fa6..39d50e3 100644
--- a/dom/events/Touch.cpp
+++ b/dom/events/Touch.cpp
@@ -188,5 +188,12 @@ Touch::GetParentObject()
   return mTarget->GetOwnerGlobal();
 }
 
+bool
+Touch::ResistFingerprinting() const
+{
+  return !nsContentUtils::LegacyIsCallerChromeOrNativeCode() &&
+         nsContentUtils::ResistFingerprinting();
+}
+
 } // namespace dom
 } // namespace mozilla
diff --git a/dom/events/Touch.h b/dom/events/Touch.h
index f98f7f9..858fb16 100644
--- a/dom/events/Touch.h
+++ b/dom/events/Touch.h
@@ -67,16 +67,19 @@ public:
   // WebIDL
   int32_t Identifier() const { return mIdentifier; }
   EventTarget* GetTarget() const;
-  int32_t ScreenX() const { return mScreenPoint.x; }
-  int32_t ScreenY() const { return mScreenPoint.y; }
+  int32_t ScreenX() const { return ResistFingerprinting() ?
+                                   mClientPoint.x : mScreenPoint.x; }
+  int32_t ScreenY() const { return ResistFingerprinting() ?
+                                   mClientPoint.y : mScreenPoint.y; }
   int32_t ClientX() const { return mClientPoint.x; }
   int32_t ClientY() const { return mClientPoint.y; }
   int32_t PageX() const { return mPagePoint.x; }
   int32_t PageY() const { return mPagePoint.y; }
-  int32_t RadiusX() const { return mRadius.x; }
-  int32_t RadiusY() const { return mRadius.y; }
-  float RotationAngle() const { return mRotationAngle; }
-  float Force() const { return mForce; }
+  int32_t RadiusX() const { return ResistFingerprinting() ? 1 : mRadius.x; }
+  int32_t RadiusY() const { return ResistFingerprinting() ? 1 : mRadius.y; }
+  float RotationAngle() const { return ResistFingerprinting() ?
+                                       0.0 : mRotationAngle; }
+  float Force() const { return ResistFingerprinting() ? 0.0 : mForce; }
 
   nsCOMPtr<EventTarget> mTarget;
   LayoutDeviceIntPoint mRefPoint;
@@ -90,6 +93,7 @@ public:
   float mRotationAngle;
   float mForce;
 protected:
+  bool ResistFingerprinting() const;
   ~Touch();
 
   bool mPointsInitialized;





More information about the tbb-commits mailing list