blob: 7b2c29bd14586c64441a8b643f5123e0baaf2043 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/test/test_ash_web_view.h"
#include "base/functional/bind.h"
#include "base/task/sequenced_task_runner.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/views/view.h"
namespace ash {
TestAshWebView::TestAshWebView(const AshWebView::InitParams& init_params)
: init_params_(init_params) {}
TestAshWebView::~TestAshWebView() = default;
void TestAshWebView::AddObserver(Observer* observer) {
observers_.AddObserver(observer);
}
void TestAshWebView::RemoveObserver(Observer* observer) {
observers_.RemoveObserver(observer);
}
gfx::NativeView TestAshWebView::GetNativeView() {
// Not yet implemented for unittests.
return nullptr;
}
bool TestAshWebView::GoBack() {
// Not yet implemented for unittests.
return false;
}
void TestAshWebView::Navigate(const GURL& url) {
current_url_ = url;
// Simulate navigation by notifying |observers_| of the expected event that
// would normally signal navigation completion. We do this asynchronously to
// more accurately simulate real-world conditions.
base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
FROM_HERE, base::BindOnce(
[](const base::WeakPtr<TestAshWebView>& self) {
if (self) {
for (auto& observer : self->observers_)
observer.DidStopLoading();
}
},
weak_factory_.GetWeakPtr()));
}
views::View* TestAshWebView::GetInitiallyFocusedView() {
return this;
}
void TestAshWebView::RequestFocus() {
focused_ = true;
}
bool TestAshWebView::HasFocus() const {
return focused_;
}
const GURL& TestAshWebView::GetVisibleURL() {
return current_url_;
}
bool TestAshWebView::IsErrorDocument() {
return is_error_document_;
}
void TestAshWebView::SetCornerRadii(const gfx::RoundedCornersF& corner_radii) {
// Not yet implemented for unittests.
}
BEGIN_METADATA(TestAshWebView)
END_METADATA
} // namespace ash