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") { ...@@ -2942,8 +2942,6 @@ static_library("browser") {
"android/webapk/webapk_update_manager.cc", "android/webapk/webapk_update_manager.cc",
"android/webapps/add_to_homescreen_coordinator.cc", "android/webapps/add_to_homescreen_coordinator.cc",
"android/webapps/add_to_homescreen_coordinator.h", "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.cc",
"android/webapps/add_to_homescreen_installer.h", "android/webapps/add_to_homescreen_installer.h",
"android/webapps/add_to_homescreen_mediator.cc", "android/webapps/add_to_homescreen_mediator.cc",
......
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
#include "base/android/scoped_java_ref.h" #include "base/android/scoped_java_ref.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/strings/string16.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/android/webapps/add_to_homescreen_installer.h"
#include "chrome/browser/banners/app_banner_manager.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 "components/webapps/browser/android/add_to_homescreen_params.h"
#include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkBitmap.h"
#include "url/gurl.h" #include "url/gurl.h"
......
...@@ -3910,7 +3910,6 @@ test("unit_tests") { ...@@ -3910,7 +3910,6 @@ test("unit_tests") {
"../browser/android/usage_stats/usage_stats_database_unittest.cc", "../browser/android/usage_stats/usage_stats_database_unittest.cc",
"../browser/android/webapk/webapk_icon_hasher_unittest.cc", "../browser/android/webapk/webapk_icon_hasher_unittest.cc",
"../browser/android/webapk/webapk_installer_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/data_reduction_proxy/data_reduction_proxy_settings_unittest_android.cc",
"../browser/download/android/available_offline_content_provider_unittest.cc", "../browser/download/android/available_offline_content_provider_unittest.cc",
"../browser/download/android/download_manager_service_unittest.cc", "../browser/download/android/download_manager_service_unittest.cc",
......
...@@ -36,6 +36,8 @@ source_set("browser") { ...@@ -36,6 +36,8 @@ source_set("browser") {
if (is_android) { if (is_android) {
sources += [ 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.cc",
"android/add_to_homescreen_params.h", "android/add_to_homescreen_params.h",
"android/features.cc", "android/features.cc",
...@@ -56,9 +58,15 @@ source_set("browser") { ...@@ -56,9 +58,15 @@ source_set("browser") {
deps += [ deps += [
"//base", "//base",
"//components/dom_distiller/core",
"//components/favicon/content",
"//components/favicon/core",
"//components/favicon_base",
"//components/infobars/android", "//components/infobars/android",
"//components/infobars/content", "//components/infobars/content",
"//components/strings", "//components/strings",
"//components/webapps/common",
"//components/webapps/common:mojo_bindings",
"//services/device/public/mojom", "//services/device/public/mojom",
"//skia", "//skia",
"//third_party/blink/public/common:common", "//third_party/blink/public/common:common",
......
...@@ -56,15 +56,21 @@ android_resources("java_resources") { ...@@ -56,15 +56,21 @@ android_resources("java_resources") {
source_set("unit_tests") { source_set("unit_tests") {
testonly = true testonly = true
sources = [ sources = [
"add_to_homescreen_data_fetcher_unittest.cc",
"shortcut_info_unittest.cc", "shortcut_info_unittest.cc",
"webapps_utils_unittest.cc", "webapps_utils_unittest.cc",
] ]
deps = [ deps = [
"//base", "//base",
"//components/favicon/content",
"//components/favicon_base",
"//components/webapps/browser", "//components/webapps/browser",
"//content/public/browser",
"//content/test:test_support",
"//testing/gtest", "//testing/gtest",
"//third_party/blink/public/common:common", "//third_party/blink/public/common:common",
"//third_party/blink/public/mojom:mojom_platform", "//third_party/blink/public/mojom:mojom_platform",
"//ui/gfx:test_support",
"//url", "//url",
] ]
} }
include_rules = [ include_rules = [
"+components/browser_ui/widget/android", "+components/browser_ui/widget/android",
"+components/dom_distiller",
"+components/favicon/content",
"+components/favicon/core",
"+components/favicon_base",
"+components/strings", "+components/strings",
"+components/webapk/android/libs/client", "+components/webapk/android/libs/client",
"+content/public/test",
"+mojo/public/cpp",
"+services/device/public/mojom", "+services/device/public/mojom",
"+ui/android", "+ui/android",
"+ui/base", "+ui/base",
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // 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 <utility>
#include <vector> #include <vector>
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_ANDROID_WEBAPPS_ADD_TO_HOMESCREEN_DATA_FETCHER_H_ #ifndef COMPONENTS_WEBAPPS_BROWSER_ANDROID_ADD_TO_HOMESCREEN_DATA_FETCHER_H_
#define CHROME_BROWSER_ANDROID_WEBAPPS_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/memory/weak_ptr.h"
#include "base/strings/string16.h" #include "base/strings/string16.h"
...@@ -120,4 +120,4 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver { ...@@ -120,4 +120,4 @@ class AddToHomescreenDataFetcher : public content::WebContentsObserver {
} // namespace webapps } // 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 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // 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 <memory>
#include <string> #include <string>
...@@ -18,15 +18,17 @@ ...@@ -18,15 +18,17 @@
#include "base/strings/string16.h" #include "base/strings/string16.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/task/cancelable_task_tracker.h"
#include "base/test/metrics/histogram_tester.h" #include "base/test/metrics/histogram_tester.h"
#include "chrome/browser/favicon/favicon_service_factory.h" #include "components/favicon/content/large_favicon_provider_getter.h"
#include "chrome/browser/flags/android/chrome_feature_list.h" #include "components/favicon/core/large_favicon_provider.h"
#include "chrome/browser/history/history_service_factory.h" #include "components/favicon_base/favicon_types.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "chrome/test/base/testing_profile.h"
#include "components/webapps/browser/installable/installable_manager.h" #include "components/webapps/browser/installable/installable_manager.h"
#include "components/webapps/browser/installable/installable_metrics.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/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/common/manifest/manifest.h"
#include "third_party/blink/public/mojom/manifest/display_mode.mojom.h" #include "third_party/blink/public/mojom/manifest/display_mode.mojom.h"
#include "ui/gfx/image/image_unittest_util.h" #include "ui/gfx/image/image_unittest_util.h"
...@@ -83,7 +85,7 @@ class ObserverWaiter : public AddToHomescreenDataFetcher::Observer { ...@@ -83,7 +85,7 @@ class ObserverWaiter : public AddToHomescreenDataFetcher::Observer {
EXPECT_FALSE(data_available_); EXPECT_FALSE(data_available_);
EXPECT_TRUE(title_available_); EXPECT_TRUE(title_available_);
data_available_ = true; data_available_ = true;
if (!quit_closure_.is_null()) if (quit_closure_)
quit_closure_.Run(); quit_closure_.Run();
} }
...@@ -96,7 +98,7 @@ class ObserverWaiter : public AddToHomescreenDataFetcher::Observer { ...@@ -96,7 +98,7 @@ class ObserverWaiter : public AddToHomescreenDataFetcher::Observer {
bool is_webapk_compatible_; bool is_webapk_compatible_;
bool title_available_; bool title_available_;
bool data_available_; bool data_available_;
base::Closure quit_closure_; base::RepeatingClosure quit_closure_;
DISALLOW_COPY_AND_ASSIGN(ObserverWaiter); DISALLOW_COPY_AND_ASSIGN(ObserverWaiter);
}; };
...@@ -200,13 +202,14 @@ class TestInstallableManager : public InstallableManager { ...@@ -200,13 +202,14 @@ class TestInstallableManager : public InstallableManager {
// Tests AddToHomescreenDataFetcher. These tests should be browser tests but // Tests AddToHomescreenDataFetcher. These tests should be browser tests but
// Android does not support browser tests yet (crbug.com/611756). // Android does not support browser tests yet (crbug.com/611756).
class AddToHomescreenDataFetcherTest : public ChromeRenderViewHostTestHarness { class AddToHomescreenDataFetcherTest
: public content::RenderViewHostTestHarness {
public: public:
AddToHomescreenDataFetcherTest() {} AddToHomescreenDataFetcherTest() {}
~AddToHomescreenDataFetcherTest() override {} ~AddToHomescreenDataFetcherTest() override {}
void SetUp() override { void SetUp() override {
ChromeRenderViewHostTestHarness::SetUp(); content::RenderViewHostTestHarness::SetUp();
// Manually inject the TestInstallableManager as a "InstallableManager" // Manually inject the TestInstallableManager as a "InstallableManager"
// WebContentsUserData. We can't directly call ::CreateForWebContents due to // WebContentsUserData. We can't directly call ::CreateForWebContents due to
...@@ -218,14 +221,12 @@ class AddToHomescreenDataFetcherTest : public ChromeRenderViewHostTestHarness { ...@@ -218,14 +221,12 @@ class AddToHomescreenDataFetcherTest : public ChromeRenderViewHostTestHarness {
installable_manager_ = static_cast<TestInstallableManager*>( installable_manager_ = static_cast<TestInstallableManager*>(
web_contents()->GetUserData(TestInstallableManager::UserDataKey())); 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 { NavigateAndCommit(GURL(kDefaultStartUrl));
return {{HistoryServiceFactory::GetInstance(),
HistoryServiceFactory::GetDefaultFactory()},
{FaviconServiceFactory::GetInstance(),
FaviconServiceFactory::GetDefaultFactory()}};
} }
std::unique_ptr<AddToHomescreenDataFetcher> BuildFetcher( std::unique_ptr<AddToHomescreenDataFetcher> BuildFetcher(
...@@ -292,7 +293,26 @@ class AddToHomescreenDataFetcherTest : public ChromeRenderViewHostTestHarness { ...@@ -292,7 +293,26 @@ class AddToHomescreenDataFetcherTest : public ChromeRenderViewHostTestHarness {
} }
private: 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_; TestInstallableManager* installable_manager_;
NullLargeFaviconProvider null_large_favicon_provider_;
DISALLOW_COPY_AND_ASSIGN(AddToHomescreenDataFetcherTest); 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