Commit 2afb237c authored by Evan Stade's avatar Evan Stade Committed by Chromium LUCI CQ

Move AddToHomescreenDataFetcher to //components/webapps

The unit test is ported to be run outside of Chrome.

Bug: 1164069
Change-Id: I8c047e8497cc738ede8c20d5ae43b30089a81357
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2631626
Auto-Submit: Evan Stade <estade@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
Commit-Queue: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845265}
parent f3ddd1ed
......@@ -2942,8 +2942,6 @@ static_library("browser") {
"android/webapk/webapk_update_manager.cc",
"android/webapps/add_to_homescreen_coordinator.cc",
"android/webapps/add_to_homescreen_coordinator.h",
"android/webapps/add_to_homescreen_data_fetcher.cc",
"android/webapps/add_to_homescreen_data_fetcher.h",
"android/webapps/add_to_homescreen_installer.cc",
"android/webapps/add_to_homescreen_installer.h",
"android/webapps/add_to_homescreen_mediator.cc",
......
......@@ -11,9 +11,9 @@
#include "base/android/scoped_java_ref.h"
#include "base/memory/weak_ptr.h"
#include "base/strings/string16.h"
#include "chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h"
#include "chrome/browser/android/webapps/add_to_homescreen_installer.h"
#include "chrome/browser/banners/app_banner_manager.h"
#include "components/webapps/browser/android/add_to_homescreen_data_fetcher.h"
#include "components/webapps/browser/android/add_to_homescreen_params.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "url/gurl.h"
......
......@@ -3910,7 +3910,6 @@ test("unit_tests") {
"../browser/android/usage_stats/usage_stats_database_unittest.cc",
"../browser/android/webapk/webapk_icon_hasher_unittest.cc",
"../browser/android/webapk/webapk_installer_unittest.cc",
"../browser/android/webapps/add_to_homescreen_data_fetcher_unittest.cc",
"../browser/data_reduction_proxy/data_reduction_proxy_settings_unittest_android.cc",
"../browser/download/android/available_offline_content_provider_unittest.cc",
"../browser/download/android/download_manager_service_unittest.cc",
......
......@@ -36,6 +36,8 @@ source_set("browser") {
if (is_android) {
sources += [
"android/add_to_homescreen_data_fetcher.cc",
"android/add_to_homescreen_data_fetcher.h",
"android/add_to_homescreen_params.cc",
"android/add_to_homescreen_params.h",
"android/features.cc",
......@@ -56,9 +58,15 @@ source_set("browser") {
deps += [
"//base",
"//components/dom_distiller/core",
"//components/favicon/content",
"//components/favicon/core",
"//components/favicon_base",
"//components/infobars/android",
"//components/infobars/content",
"//components/strings",
"//components/webapps/common",
"//components/webapps/common:mojo_bindings",
"//services/device/public/mojom",
"//skia",
"//third_party/blink/public/common:common",
......
......@@ -56,15 +56,21 @@ android_resources("java_resources") {
source_set("unit_tests") {
testonly = true
sources = [
"add_to_homescreen_data_fetcher_unittest.cc",
"shortcut_info_unittest.cc",
"webapps_utils_unittest.cc",
]
deps = [
"//base",
"//components/favicon/content",
"//components/favicon_base",
"//components/webapps/browser",
"//content/public/browser",
"//content/test:test_support",
"//testing/gtest",
"//third_party/blink/public/common:common",
"//third_party/blink/public/mojom:mojom_platform",
"//ui/gfx:test_support",
"//url",
]
}
include_rules = [
"+components/browser_ui/widget/android",
"+components/dom_distiller",
"+components/favicon/content",
"+components/favicon/core",
"+components/favicon_base",
"+components/strings",
"+components/webapk/android/libs/client",
"+content/public/test",
"+mojo/public/cpp",
"+services/device/public/mojom",
"+ui/android",
"+ui/base",
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h"
#include "components/webapps/browser/android/add_to_homescreen_data_fetcher.h"
#include <utility>
#include <vector>
......
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_DATA_FETCHER_H_
#define CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_DATA_FETCHER_H_
#ifndef COMPONENTS_WEBAPPS_BROWSER_ANDROID_ADD_TO_HOMESCREEN_DATA_FETCHER_H_
#define COMPONENTS_WEBAPPS_BROWSER_ANDROID_ADD_TO_HOMESCREEN_DATA_FETCHER_H_
#include "base/memory/weak_ptr.h"
#include "base/strings/string16.h"
......@@ -120,4 +120,4 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver {
} // namespace webapps
#endif // CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_DATA_FETCHER_H_
#endif // COMPONENTS_WEBAPPS_BROWSER_ANDROID_ADD_TO_HOMESCREEN_DATA_FETCHER_H_
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h"
#include "components/webapps/browser/android/add_to_homescreen_data_fetcher.h"
#include <memory>
#include <string>
......@@ -18,15 +18,17 @@
#include "base/strings/string16.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/cancelable_task_tracker.h"
#include "base/test/metrics/histogram_tester.h"
#include "chrome/browser/favicon/favicon_service_factory.h"
#include "chrome/browser/flags/android/chrome_feature_list.h"
#include "chrome/browser/history/history_service_factory.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "chrome/test/base/testing_profile.h"
#include "components/favicon/content/large_favicon_provider_getter.h"
#include "components/favicon/core/large_favicon_provider.h"
#include "components/favicon_base/favicon_types.h"
#include "components/webapps/browser/installable/installable_manager.h"
#include "components/webapps/browser/installable/installable_metrics.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/test_renderer_host.h"
#include "third_party/blink/public/common/manifest/manifest.h"
#include "third_party/blink/public/mojom/manifest/display_mode.mojom.h"
#include "ui/gfx/image/image_unittest_util.h"
......@@ -83,7 +85,7 @@ class ObserverWaiter : public AddToHomescreenDataFetcher::Observer {
EXPECT_FALSE(data_available_);
EXPECT_TRUE(title_available_);
data_available_ = true;
if (!quit_closure_.is_null())
if (quit_closure_)
quit_closure_.Run();
}
......@@ -96,7 +98,7 @@ class ObserverWaiter : public AddToHomescreenDataFetcher::Observer {
bool is_webapk_compatible_;
bool title_available_;
bool data_available_;
base::Closure quit_closure_;
base::RepeatingClosure quit_closure_;
DISALLOW_COPY_AND_ASSIGN(ObserverWaiter);
};
......@@ -200,13 +202,14 @@ class TestInstallableManager : public InstallableManager {
// Tests AddToHomescreenDataFetcher. These tests should be browser tests but
// Android does not support browser tests yet (crbug.com/611756).
class AddToHomescreenDataFetcherTest : public ChromeRenderViewHostTestHarness {
class AddToHomescreenDataFetcherTest
: public content::RenderViewHostTestHarness {
public:
AddToHomescreenDataFetcherTest() {}
~AddToHomescreenDataFetcherTest() override {}
void SetUp() override {
ChromeRenderViewHostTestHarness::SetUp();
content::RenderViewHostTestHarness::SetUp();
// Manually inject the TestInstallableManager as a "InstallableManager"
// WebContentsUserData. We can't directly call ::CreateForWebContents due to
......@@ -218,14 +221,12 @@ class AddToHomescreenDataFetcherTest : public ChromeRenderViewHostTestHarness {
installable_manager_ = static_cast<TestInstallableManager*>(
web_contents()->GetUserData(TestInstallableManager::UserDataKey()));
NavigateAndCommit(GURL(kDefaultStartUrl));
}
favicon::SetLargeFaviconProviderGetter(base::BindRepeating(
[](favicon::LargeFaviconProvider* provider,
content::BrowserContext* context) { return provider; },
&null_large_favicon_provider_));
TestingProfile::TestingFactories GetTestingFactories() const override {
return {{HistoryServiceFactory::GetInstance(),
HistoryServiceFactory::GetDefaultFactory()},
{FaviconServiceFactory::GetInstance(),
FaviconServiceFactory::GetDefaultFactory()}};
NavigateAndCommit(GURL(kDefaultStartUrl));
}
std::unique_ptr<AddToHomescreenDataFetcher> BuildFetcher(
......@@ -292,7 +293,26 @@ class AddToHomescreenDataFetcherTest : public ChromeRenderViewHostTestHarness {
}
private:
class NullLargeFaviconProvider : public favicon::LargeFaviconProvider {
public:
NullLargeFaviconProvider() = default;
virtual ~NullLargeFaviconProvider() = default;
base::CancelableTaskTracker::TaskId GetLargestRawFaviconForPageURL(
const GURL& page_url,
const std::vector<favicon_base::IconTypeSet>& icon_types,
int minimum_size_in_pixels,
favicon_base::FaviconRawBitmapCallback callback,
base::CancelableTaskTracker* tracker) override {
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(std::move(callback),
favicon_base::FaviconRawBitmapResult()));
return base::CancelableTaskTracker::kBadTaskId;
}
};
TestInstallableManager* installable_manager_;
NullLargeFaviconProvider null_large_favicon_provider_;
DISALLOW_COPY_AND_ASSIGN(AddToHomescreenDataFetcherTest);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment