widget/InProcessCompositorWidget.cpp
author Erica Wright <ewright@mozilla.com>
Fri, 28 Dec 2018 04:26:00 +0000
changeset 512272 7e75579b27d017c48a83e04db1588f7232cc750a
parent 508163 6f3709b3878117466168c40affa7bca0b60cf75b
child 514505 5f4630838d46dd81dadb13220a4af0da9e23a619
permissions -rw-r--r--
Bug 1512166 - Show blocked labels by default, hide when there's an exception. r=nhnt11 In the control panel, show the blocking category labels for tracking protection and cookie restrictions. Hide the label if the user has set an exception for that page. Differential Revision: https://phabricator.services.mozilla.com/D15212

/* 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 "InProcessCompositorWidget.h"

#include "mozilla/VsyncDispatcher.h"
#include "nsBaseWidget.h"

#if defined(MOZ_WIDGET_ANDROID) && !defined(MOZ_WIDGET_SUPPORTS_OOP_COMPOSITING)
#include "mozilla/widget/AndroidCompositorWidget.h"
#endif

namespace mozilla {
namespace widget {

// Platforms with no OOP compositor process support use
// InProcessCompositorWidget by default.
#if !defined(MOZ_WIDGET_SUPPORTS_OOP_COMPOSITING)
/* static */ RefPtr<CompositorWidget> CompositorWidget::CreateLocal(
    const CompositorWidgetInitData& aInitData,
    const layers::CompositorOptions& aOptions, nsIWidget* aWidget) {
  MOZ_ASSERT(aWidget);
#ifdef MOZ_WIDGET_ANDROID
  return new AndroidCompositorWidget(aOptions,
                                     static_cast<nsBaseWidget*>(aWidget));
#else
  return new InProcessCompositorWidget(aOptions,
                                       static_cast<nsBaseWidget*>(aWidget));
#endif
}
#endif

InProcessCompositorWidget::InProcessCompositorWidget(
    const layers::CompositorOptions& aOptions, nsBaseWidget* aWidget)
    : CompositorWidget(aOptions), mWidget(aWidget) {}

bool InProcessCompositorWidget::PreRender(WidgetRenderingContext* aContext) {
  return mWidget->PreRender(aContext);
}

void InProcessCompositorWidget::PostRender(WidgetRenderingContext* aContext) {
  mWidget->PostRender(aContext);
}

void InProcessCompositorWidget::DrawWindowUnderlay(
    WidgetRenderingContext* aContext, LayoutDeviceIntRect aRect) {
  mWidget->DrawWindowUnderlay(aContext, aRect);
}

void InProcessCompositorWidget::DrawWindowOverlay(
    WidgetRenderingContext* aContext, LayoutDeviceIntRect aRect) {
  mWidget->DrawWindowOverlay(aContext, aRect);
}

already_AddRefed<gfx::DrawTarget>
InProcessCompositorWidget::StartRemoteDrawing() {
  return mWidget->StartRemoteDrawing();
}

already_AddRefed<gfx::DrawTarget>
InProcessCompositorWidget::StartRemoteDrawingInRegion(
    LayoutDeviceIntRegion& aInvalidRegion, layers::BufferMode* aBufferMode) {
  return mWidget->StartRemoteDrawingInRegion(aInvalidRegion, aBufferMode);
}

void InProcessCompositorWidget::EndRemoteDrawing() {
  mWidget->EndRemoteDrawing();
}

void InProcessCompositorWidget::EndRemoteDrawingInRegion(
    gfx::DrawTarget* aDrawTarget, LayoutDeviceIntRegion& aInvalidRegion) {
  mWidget->EndRemoteDrawingInRegion(aDrawTarget, aInvalidRegion);
}

void InProcessCompositorWidget::CleanupRemoteDrawing() {
  mWidget->CleanupRemoteDrawing();
}

void InProcessCompositorWidget::CleanupWindowEffects() {
  mWidget->CleanupWindowEffects();
}

bool InProcessCompositorWidget::InitCompositor(
    layers::Compositor* aCompositor) {
  return mWidget->InitCompositor(aCompositor);
}

LayoutDeviceIntSize InProcessCompositorWidget::GetClientSize() {
  return mWidget->GetClientSize();
}

uint32_t InProcessCompositorWidget::GetGLFrameBufferFormat() {
  return mWidget->GetGLFrameBufferFormat();
}

uintptr_t InProcessCompositorWidget::GetWidgetKey() {
  return reinterpret_cast<uintptr_t>(mWidget);
}

nsIWidget* InProcessCompositorWidget::RealWidget() { return mWidget; }

void InProcessCompositorWidget::ObserveVsync(VsyncObserver* aObserver) {
  if (RefPtr<CompositorVsyncDispatcher> cvd =
          mWidget->GetCompositorVsyncDispatcher()) {
    cvd->SetCompositorVsyncObserver(aObserver);
  }
}

}  // namespace widget
}  // namespace mozilla