blob: 18fd7bfa0f8968805eeaa1958f5375dff80ee6aa [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 "ash/test/test_ash_web_view.h"
#include "base/bind.h"
#include "base/threading/sequenced_task_runner_handle.h"
namespace ash {
TestAshWebView::TestAshWebView() = default;
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) {
// 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::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(
[](const base::WeakPtr<TestAshWebView>& self) {
if (self) {
for (auto& observer : self->observers_)
observer.DidStopLoading();
}
},
weak_factory_.GetWeakPtr()));
}
} // namespace ash