blob: d52c238462af24a87731ac4ea35b701f0a679464 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/test/mock_display_feature.h"
#include "build/build_config.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#if defined(OS_ANDROID)
#include "content/browser/renderer_host/render_widget_host_view_android.h"
#include "content/test/test_view_android_delegate.h"
#endif
namespace content {
MockDisplayFeature::MockDisplayFeature(RenderWidgetHostViewBase* rwhv)
: render_widget_host_view_(rwhv) {
DCHECK(!render_widget_host_view_->IsRenderWidgetHostViewChildFrame());
#if defined(OS_ANDROID)
auto* rwhv_android =
static_cast<RenderWidgetHostViewAndroid*>(render_widget_host_view_);
test_view_android_delegate_ = std::make_unique<TestViewAndroidDelegate>();
test_view_android_delegate_->SetupTestDelegate(rwhv_android->GetNativeView());
#endif // OS_ANDROID
}
MockDisplayFeature::~MockDisplayFeature() = default;
void MockDisplayFeature::SetDisplayFeature(
const DisplayFeature* display_feature) {
#if defined(OS_ANDROID)
const gfx::Size root_view_size =
render_widget_host_view_->GetVisibleViewportSize();
gfx::Rect display_feature_rect;
if (display_feature) {
if (display_feature->orientation ==
DisplayFeature::Orientation::kVertical) {
display_feature_rect =
gfx::Rect(display_feature->offset, 0, display_feature->mask_length,
root_view_size.height());
} else {
display_feature_rect =
gfx::Rect(0, display_feature->offset, root_view_size.width(),
display_feature->mask_length);
}
}
test_view_android_delegate_->SetDisplayFeatureForTesting(
gfx::ScaleToEnclosedRect(
display_feature_rect,
render_widget_host_view_->GetNativeView()->GetDipScale()));
#else
render_widget_host_view_->SetDisplayFeatureForTesting(display_feature);
#endif
}
} // namespace content