Commit f9cf4f09 authored by Alexey Baskakov's avatar Alexey Baskakov Committed by Commit Bot

WebApp: Rename UninstallWebApp method to UninstallWebAppFromSyncByUser.

This is a preparation CL to implement Uninstall for the new web apps.

A web app can't be fully uninstalled by any call site.
Instead: A call site may request uninstallation, but the app may stay
installed if it is required by other sources.

CanUserUninstallFromSync+UninstallWebAppFromSyncByUser is just one
scenario for uninstallation. UninstallExternalWebApp will be extended.

Bug: 901226
Change-Id: I91f13754c0cc4a2fe80fd2a7b79e340ea9c3b2f3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1921019Reviewed-by: default avatarEric Willigers <ericwilligers@chromium.org>
Commit-Queue: Alexey Baskakov <loyso@chromium.org>
Cr-Commit-Position: refs/heads/master@{#716438}
parent 5ad39284
...@@ -60,10 +60,9 @@ class InstallFinalizer { ...@@ -60,10 +60,9 @@ class InstallFinalizer {
virtual void UninstallExternalWebApp(const GURL& app_url, virtual void UninstallExternalWebApp(const GURL& app_url,
UninstallWebAppCallback) = 0; UninstallWebAppCallback) = 0;
// Removes the web app with |app_id| from disk, registrar and all sync'd virtual bool CanUserUninstallFromSync(const AppId& app_id) const = 0;
// devices. virtual void UninstallWebAppFromSyncByUser(const AppId& app_id,
virtual void UninstallWebApp(const AppId& app_id, UninstallWebAppCallback) = 0;
UninstallWebAppCallback) = 0;
// |virtual| for testing. // |virtual| for testing.
virtual bool CanAddAppToQuickLaunchBar() const; virtual bool CanAddAppToQuickLaunchBar() const;
...@@ -78,8 +77,6 @@ class InstallFinalizer { ...@@ -78,8 +77,6 @@ class InstallFinalizer {
virtual bool CanRevealAppShim() const = 0; virtual bool CanRevealAppShim() const = 0;
virtual void RevealAppShim(const AppId& app_id) = 0; virtual void RevealAppShim(const AppId& app_id) = 0;
virtual bool CanUserUninstallFromSync(const AppId& app_id) const = 0;
void SetSubsystems(AppRegistrar* registrar, WebAppUiManager* ui_manager); void SetSubsystems(AppRegistrar* registrar, WebAppUiManager* ui_manager);
virtual ~InstallFinalizer() = default; virtual ~InstallFinalizer() = default;
......
...@@ -295,7 +295,8 @@ IN_PROC_BROWSER_TEST_F(ManifestUpdateManagerBrowserTest, ...@@ -295,7 +295,8 @@ IN_PROC_BROWSER_TEST_F(ManifestUpdateManagerBrowserTest,
GURL url = GetAppURL(); GURL url = GetAppURL();
UpdateCheckResultAwaiter awaiter(browser(), url); UpdateCheckResultAwaiter awaiter(browser(), url);
ui_test_utils::NavigateToURL(browser(), url); ui_test_utils::NavigateToURL(browser(), url);
GetProvider().install_finalizer().UninstallWebApp(app_id, base::DoNothing()); GetProvider().install_finalizer().UninstallWebAppFromSyncByUser(
app_id, base::DoNothing());
EXPECT_EQ(std::move(awaiter).AwaitNextResult(), EXPECT_EQ(std::move(awaiter).AwaitNextResult(),
ManifestUpdateResult::kAppUninstalled); ManifestUpdateResult::kAppUninstalled);
histogram_tester_.ExpectBucketCount(kUpdateHistogramName, histogram_tester_.ExpectBucketCount(kUpdateHistogramName,
......
...@@ -159,10 +159,27 @@ void BookmarkAppInstallFinalizer::UninstallExternalWebApp( ...@@ -159,10 +159,27 @@ void BookmarkAppInstallFinalizer::UninstallExternalWebApp(
return; return;
} }
UninstallWebApp(*app_id, std::move(callback)); UninstallExtension(*app_id, std::move(callback));
} }
void BookmarkAppInstallFinalizer::UninstallWebApp( bool BookmarkAppInstallFinalizer::CanUserUninstallFromSync(
const web_app::AppId& app_id) const {
const Extension* app = GetEnabledExtension(app_id);
DCHECK(app);
return extensions::ExtensionSystem::Get(profile_)
->management_policy()
->UserMayModifySettings(app, nullptr);
}
void BookmarkAppInstallFinalizer::UninstallWebAppFromSyncByUser(
const web_app::AppId& app_id,
UninstallWebAppCallback callback) {
// Bookmark apps don't support app installation from different sources.
// Uninstall extension completely:
UninstallExtension(app_id, std::move(callback));
}
void BookmarkAppInstallFinalizer::UninstallExtension(
const web_app::AppId& app_id, const web_app::AppId& app_id,
UninstallWebAppCallback callback) { UninstallWebAppCallback callback) {
if (!GetEnabledExtension(app_id)) { if (!GetEnabledExtension(app_id)) {
...@@ -205,15 +222,6 @@ void BookmarkAppInstallFinalizer::RevealAppShim(const web_app::AppId& app_id) { ...@@ -205,15 +222,6 @@ void BookmarkAppInstallFinalizer::RevealAppShim(const web_app::AppId& app_id) {
#endif // defined(OS_MACOSX) #endif // defined(OS_MACOSX)
} }
bool BookmarkAppInstallFinalizer::CanUserUninstallFromSync(
const web_app::AppId& app_id) const {
const Extension* app = GetEnabledExtension(app_id);
DCHECK(app);
return extensions::ExtensionSystem::Get(profile_)
->management_policy()
->UserMayModifySettings(app, nullptr);
}
void BookmarkAppInstallFinalizer::SetCrxInstallerFactoryForTesting( void BookmarkAppInstallFinalizer::SetCrxInstallerFactoryForTesting(
CrxInstallerFactory crx_installer_factory) { CrxInstallerFactory crx_installer_factory) {
crx_installer_factory_ = crx_installer_factory; crx_installer_factory_ = crx_installer_factory;
......
...@@ -44,11 +44,11 @@ class BookmarkAppInstallFinalizer : public web_app::InstallFinalizer { ...@@ -44,11 +44,11 @@ class BookmarkAppInstallFinalizer : public web_app::InstallFinalizer {
InstallFinalizedCallback callback) override; InstallFinalizedCallback callback) override;
void UninstallExternalWebApp(const GURL& app_url, void UninstallExternalWebApp(const GURL& app_url,
UninstallWebAppCallback callback) override; UninstallWebAppCallback callback) override;
void UninstallWebApp(const web_app::AppId& app_id, bool CanUserUninstallFromSync(const web_app::AppId& app_id) const override;
UninstallWebAppCallback) override; void UninstallWebAppFromSyncByUser(const web_app::AppId& app_id,
UninstallWebAppCallback) override;
bool CanRevealAppShim() const override; bool CanRevealAppShim() const override;
void RevealAppShim(const web_app::AppId& app_id) override; void RevealAppShim(const web_app::AppId& app_id) override;
bool CanUserUninstallFromSync(const web_app::AppId& app_id) const override;
using CrxInstallerFactory = using CrxInstallerFactory =
base::RepeatingCallback<scoped_refptr<CrxInstaller>(Profile*)>; base::RepeatingCallback<scoped_refptr<CrxInstaller>(Profile*)>;
...@@ -59,6 +59,9 @@ class BookmarkAppInstallFinalizer : public web_app::InstallFinalizer { ...@@ -59,6 +59,9 @@ class BookmarkAppInstallFinalizer : public web_app::InstallFinalizer {
// May return nullptr if app_id is not found or extension is disabled. // May return nullptr if app_id is not found or extension is disabled.
const Extension* GetEnabledExtension(const web_app::AppId& app_id) const; const Extension* GetEnabledExtension(const web_app::AppId& app_id) const;
void UninstallExtension(const web_app::AppId& app_id,
UninstallWebAppCallback);
void OnExtensionInstalled(const GURL& app_url, void OnExtensionInstalled(const GURL& app_url,
LaunchType launch_type, LaunchType launch_type,
bool is_locally_installed, bool is_locally_installed,
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/callback.h" #include "base/callback.h"
#include "base/logging.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/optional.h" #include "base/optional.h"
#include "base/run_loop.h" #include "base/run_loop.h"
...@@ -197,8 +198,16 @@ class TestPendingAppInstallFinalizer : public InstallFinalizer { ...@@ -197,8 +198,16 @@ class TestPendingAppInstallFinalizer : public InstallFinalizer {
})); }));
} }
void UninstallWebApp(const AppId& app_dd, bool CanUserUninstallFromSync(const AppId& app_id) const override {
UninstallWebAppCallback callback) override {} NOTIMPLEMENTED();
return false;
}
void UninstallWebAppFromSyncByUser(
const AppId& app_dd,
UninstallWebAppCallback callback) override {
NOTIMPLEMENTED();
}
bool CanAddAppToQuickLaunchBar() const override { return true; } bool CanAddAppToQuickLaunchBar() const override { return true; }
...@@ -223,11 +232,6 @@ class TestPendingAppInstallFinalizer : public InstallFinalizer { ...@@ -223,11 +232,6 @@ class TestPendingAppInstallFinalizer : public InstallFinalizer {
++num_reveal_appshim_calls_; ++num_reveal_appshim_calls_;
} }
bool CanUserUninstallFromSync(const AppId& app_id) const override {
NOTIMPLEMENTED();
return false;
}
private: private:
TestAppRegistrar* registrar_ = nullptr; TestAppRegistrar* registrar_ = nullptr;
......
...@@ -21,7 +21,7 @@ AppId TestInstallFinalizer::GetAppIdForUrl(const GURL& url) { ...@@ -21,7 +21,7 @@ AppId TestInstallFinalizer::GetAppIdForUrl(const GURL& url) {
return GenerateAppIdFromURL(url); return GenerateAppIdFromURL(url);
} }
TestInstallFinalizer::TestInstallFinalizer() {} TestInstallFinalizer::TestInstallFinalizer() = default;
TestInstallFinalizer::~TestInstallFinalizer() = default; TestInstallFinalizer::~TestInstallFinalizer() = default;
...@@ -69,8 +69,16 @@ void TestInstallFinalizer::UninstallExternalWebApp( ...@@ -69,8 +69,16 @@ void TestInstallFinalizer::UninstallExternalWebApp(
})); }));
} }
void TestInstallFinalizer::UninstallWebApp(const AppId& app_url, bool TestInstallFinalizer::CanUserUninstallFromSync(const AppId& app_id) const {
UninstallWebAppCallback callback) {} NOTIMPLEMENTED();
return false;
}
void TestInstallFinalizer::UninstallWebAppFromSyncByUser(
const AppId& app_url,
UninstallWebAppCallback callback) {
NOTIMPLEMENTED();
}
bool TestInstallFinalizer::CanAddAppToQuickLaunchBar() const { bool TestInstallFinalizer::CanAddAppToQuickLaunchBar() const {
return true; return true;
...@@ -99,11 +107,6 @@ void TestInstallFinalizer::RevealAppShim(const AppId& app_id) { ...@@ -99,11 +107,6 @@ void TestInstallFinalizer::RevealAppShim(const AppId& app_id) {
++num_reveal_appshim_calls_; ++num_reveal_appshim_calls_;
} }
bool TestInstallFinalizer::CanUserUninstallFromSync(const AppId& app_id) const {
NOTIMPLEMENTED();
return false;
}
void TestInstallFinalizer::SetNextFinalizeInstallResult( void TestInstallFinalizer::SetNextFinalizeInstallResult(
const AppId& app_id, const AppId& app_id,
InstallResultCode code) { InstallResultCode code) {
......
...@@ -37,8 +37,9 @@ class TestInstallFinalizer final : public InstallFinalizer { ...@@ -37,8 +37,9 @@ class TestInstallFinalizer final : public InstallFinalizer {
InstallFinalizedCallback callback) override; InstallFinalizedCallback callback) override;
void UninstallExternalWebApp(const GURL& app_url, void UninstallExternalWebApp(const GURL& app_url,
UninstallWebAppCallback callback) override; UninstallWebAppCallback callback) override;
void UninstallWebApp(const AppId& app_id, bool CanUserUninstallFromSync(const AppId& app_id) const override;
UninstallWebAppCallback callback) override; void UninstallWebAppFromSyncByUser(const AppId& app_id,
UninstallWebAppCallback callback) override;
bool CanAddAppToQuickLaunchBar() const override; bool CanAddAppToQuickLaunchBar() const override;
void AddAppToQuickLaunchBar(const AppId& app_id) override; void AddAppToQuickLaunchBar(const AppId& app_id) override;
bool CanReparentTab(const AppId& app_id, bool CanReparentTab(const AppId& app_id,
...@@ -48,7 +49,6 @@ class TestInstallFinalizer final : public InstallFinalizer { ...@@ -48,7 +49,6 @@ class TestInstallFinalizer final : public InstallFinalizer {
content::WebContents* web_contents) override; content::WebContents* web_contents) override;
bool CanRevealAppShim() const override; bool CanRevealAppShim() const override;
void RevealAppShim(const AppId& app_id) override; void RevealAppShim(const AppId& app_id) override;
bool CanUserUninstallFromSync(const AppId& app_id) const override;
void SetNextFinalizeInstallResult(const AppId& app_id, void SetNextFinalizeInstallResult(const AppId& app_id,
InstallResultCode code); InstallResultCode code);
......
...@@ -232,22 +232,29 @@ void WebAppInstallFinalizer::UninstallExternalWebApp( ...@@ -232,22 +232,29 @@ void WebAppInstallFinalizer::UninstallExternalWebApp(
NOTIMPLEMENTED(); NOTIMPLEMENTED();
} }
void WebAppInstallFinalizer::FinalizeUpdate( bool WebAppInstallFinalizer::CanUserUninstallFromSync(
const WebApplicationInfo& web_app_info, const AppId& app_id) const {
InstallFinalizedCallback callback) { // TODO(crbug.com/901226): Implement it.
// TODO(crbug.com/926083): Implement update logic, this requires updating return false;
// WebAppIconManager to clean out the existing icons and write new ones.
NOTIMPLEMENTED();
} }
void WebAppInstallFinalizer::UninstallWebApp(const AppId& app_id, void WebAppInstallFinalizer::UninstallWebAppFromSyncByUser(
UninstallWebAppCallback) { const AppId& app_id,
UninstallWebAppCallback) {
// TODO(loyso): Implement The Unified Uninstall API. Expose Source as an // TODO(loyso): Implement The Unified Uninstall API. Expose Source as an
// argument for UninstallWebApp method. Do app->RemoveSource from the app and // argument for UninstallWebApp method. Do app->RemoveSource from the app and
// uninstall the app if no more sources interested. // uninstall the app if no more sources interested.
NOTIMPLEMENTED(); NOTIMPLEMENTED();
} }
void WebAppInstallFinalizer::FinalizeUpdate(
const WebApplicationInfo& web_app_info,
InstallFinalizedCallback callback) {
// TODO(crbug.com/926083): Implement update logic, this requires updating
// WebAppIconManager to clean out the existing icons and write new ones.
NOTIMPLEMENTED();
}
void WebAppInstallFinalizer::OnIconsDataWritten( void WebAppInstallFinalizer::OnIconsDataWritten(
InstallFinalizedCallback callback, InstallFinalizedCallback callback,
std::unique_ptr<WebApp> web_app, std::unique_ptr<WebApp> web_app,
...@@ -315,10 +322,4 @@ void WebAppInstallFinalizer::RevealAppShim(const AppId& app_id) { ...@@ -315,10 +322,4 @@ void WebAppInstallFinalizer::RevealAppShim(const AppId& app_id) {
NOTIMPLEMENTED(); NOTIMPLEMENTED();
} }
bool WebAppInstallFinalizer::CanUserUninstallFromSync(
const AppId& app_id) const {
// TODO(crbug.com/901226): Implement it.
return false;
}
} // namespace web_app } // namespace web_app
...@@ -38,10 +38,11 @@ class WebAppInstallFinalizer final : public InstallFinalizer { ...@@ -38,10 +38,11 @@ class WebAppInstallFinalizer final : public InstallFinalizer {
InstallFinalizedCallback callback) override; InstallFinalizedCallback callback) override;
void UninstallExternalWebApp(const GURL& app_url, void UninstallExternalWebApp(const GURL& app_url,
UninstallWebAppCallback callback) override; UninstallWebAppCallback callback) override;
void UninstallWebApp(const AppId& app_id, UninstallWebAppCallback) override; bool CanUserUninstallFromSync(const AppId& app_id) const override;
void UninstallWebAppFromSyncByUser(const AppId& app_id,
UninstallWebAppCallback) override;
bool CanRevealAppShim() const override; bool CanRevealAppShim() const override;
void RevealAppShim(const AppId& app_id) override; void RevealAppShim(const AppId& app_id) override;
bool CanUserUninstallFromSync(const AppId& app_id) const override;
private: private:
void OnIconsDataWritten(InstallFinalizedCallback callback, void OnIconsDataWritten(InstallFinalizedCallback callback,
......
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