blob: 30ae2542d131489cb67f45c0b38f86fda1540cc7 [file] [log] [blame]
// Copyright 2019 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 "chrome/browser/web_applications/test/test_web_app_url_loader.h"
#include "base/callback.h"
#include "base/stl_util.h"
#include "base/threading/thread_task_runner_handle.h"
namespace web_app {
TestWebAppUrlLoader::TestWebAppUrlLoader() = default;
TestWebAppUrlLoader::~TestWebAppUrlLoader() = default;
void TestWebAppUrlLoader::SaveLoadUrlRequests() {
should_save_requests_ = true;
}
void TestWebAppUrlLoader::ProcessLoadUrlRequests() {
while (!pending_requests_.empty()) {
GURL url;
ResultCallback callback;
std::tie(url, callback) = std::move(pending_requests_.front());
pending_requests_.pop();
DCHECK(base::ContainsKey(next_result_map_, url));
auto result = next_result_map_[url];
next_result_map_.erase(url);
std::move(callback).Run(result);
}
}
void TestWebAppUrlLoader::SetNextLoadUrlResult(const GURL& url, Result result) {
DCHECK(!base::ContainsKey(next_result_map_, url)) << url;
next_result_map_[url] = result;
}
void TestWebAppUrlLoader::LoadUrl(const GURL& url,
content::WebContents* web_contents,
ResultCallback callback) {
if (should_save_requests_) {
pending_requests_.emplace(url, std::move(callback));
return;
}
DCHECK(base::ContainsKey(next_result_map_, url)) << url;
auto result = next_result_map_[url];
next_result_map_.erase(url);
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), result));
}
} // namespace web_app