CoalescedInputData.cpp (1535B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #include "CoalescedInputData.h" 8 9 #include "BrowserChild.h" 10 #include "mozilla/PresShell.h" 11 #include "nsRefreshDriver.h" 12 13 using namespace mozilla; 14 using namespace mozilla::dom; 15 16 void CoalescedInputFlusher::StartObserver() { 17 nsRefreshDriver* refreshDriver = GetRefreshDriver(); 18 if (mRefreshDriver && mRefreshDriver == refreshDriver) { 19 // Nothing to do if we already added an observer and it's same refresh 20 // driver. 21 return; 22 } 23 RemoveObserver(); 24 if (refreshDriver) { 25 mRefreshDriver = refreshDriver; 26 mRefreshDriver->AddRefreshObserver(this, FlushType::Event, 27 "Coalesced input move flusher"); 28 } 29 } 30 31 CoalescedInputFlusher::CoalescedInputFlusher(BrowserChild* aBrowserChild) 32 : mBrowserChild(aBrowserChild) {} 33 34 void CoalescedInputFlusher::RemoveObserver() { 35 if (mRefreshDriver) { 36 mRefreshDriver->RemoveRefreshObserver(this, FlushType::Event); 37 mRefreshDriver = nullptr; 38 } 39 } 40 41 CoalescedInputFlusher::~CoalescedInputFlusher() = default; 42 43 nsRefreshDriver* CoalescedInputFlusher::GetRefreshDriver() { 44 if (PresShell* presShell = mBrowserChild->GetTopLevelPresShell()) { 45 return presShell->GetRefreshDriver(); 46 } 47 return nullptr; 48 }