blob: 3f2b33b0c58eef38e0aff179f1f6e98b66823aac [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// 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/web_app_install_manager.h"
#include <iterator>
#include <memory>
#include <utility>
#include "base/feature_list.h"
#include "base/files/file_path.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "base/observer_list.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/web_applications/install_bounce_metric.h"
#include "chrome/browser/web_applications/web_app_command_manager.h"
#include "chrome/browser/web_applications/web_app_constants.h"
#include "chrome/browser/web_applications/web_app_install_manager_observer.h"
#include "chrome/browser/web_applications/web_app_logging.h"
#include "chrome/browser/web_applications/web_app_provider.h"
#include "chrome/browser/web_applications/web_app_utils.h"
#include "chrome/common/chrome_features.h"
#include "components/webapps/browser/installable/installable_metrics.h"
namespace web_app {
WebAppInstallManager::WebAppInstallManager(Profile* profile)
: profile_(profile) {}
WebAppInstallManager::~WebAppInstallManager() {
NotifyWebAppInstallManagerDestroyed();
}
void WebAppInstallManager::SetProvider(base::PassKey<WebAppProvider>,
WebAppProvider& provider) {
provider_ = &provider;
}
void WebAppInstallManager::Start() {}
void WebAppInstallManager::Shutdown() {}
void WebAppInstallManager::AddObserver(WebAppInstallManagerObserver* observer) {
observers_.AddObserver(observer);
}
void WebAppInstallManager::RemoveObserver(
WebAppInstallManagerObserver* observer) {
observers_.RemoveObserver(observer);
}
void WebAppInstallManager::NotifyWebAppInstalled(const webapps::AppId& app_id) {
DVLOG(1) << "NotifyWebAppInstalled " << app_id;
for (WebAppInstallManagerObserver& observer : observers_) {
observer.OnWebAppInstalled(app_id);
}
// TODO(alancutter): Call RecordWebAppInstallation here when we get access to
// the webapps::WebappInstallSource in this event.
}
void WebAppInstallManager::NotifyWebAppInstalledWithOsHooks(
const webapps::AppId& app_id) {
DVLOG(1) << "NotifyWebAppInstalledWithOsHooks " << app_id;
for (WebAppInstallManagerObserver& obs : observers_) {
obs.OnWebAppInstalledWithOsHooks(app_id);
}
}
void WebAppInstallManager::NotifyWebAppSourceRemoved(
const webapps::AppId& app_id) {
DVLOG(1) << "NotifyWebAppSourceRemoved " << app_id;
for (WebAppInstallManagerObserver& observer : observers_) {
observer.OnWebAppSourceRemoved(app_id);
}
}
void WebAppInstallManager::NotifyWebAppUninstalled(
const webapps::AppId& app_id,
webapps::WebappUninstallSource uninstall_source) {
DVLOG(1) << "NotifyWebAppUninstalled " << app_id;
for (WebAppInstallManagerObserver& observer : observers_) {
observer.OnWebAppUninstalled(app_id, uninstall_source);
}
}
void WebAppInstallManager::NotifyWebAppManifestUpdated(
const webapps::AppId& app_id) {
DVLOG(1) << "NotifyWebAppManifestUpdated " << app_id;
for (WebAppInstallManagerObserver& observer : observers_) {
observer.OnWebAppManifestUpdated(app_id);
}
}
void WebAppInstallManager::NotifyWebAppWillBeUninstalled(
const webapps::AppId& app_id) {
DVLOG(1) << "NotifyWebAppWillBeUninstalled " << app_id;
for (WebAppInstallManagerObserver& observer : observers_) {
observer.OnWebAppWillBeUninstalled(app_id);
}
RecordWebAppUninstallation(profile_->GetPrefs(), app_id);
}
void WebAppInstallManager::NotifyWebAppInstallManagerDestroyed() {
DVLOG(1) << "NotifyWebAppInstallManagerDestroyed";
for (WebAppInstallManagerObserver& observer : observers_) {
observer.OnWebAppInstallManagerDestroyed();
}
}
} // namespace web_app