blob: 7f5735012f8442f2b2ba8f163e25e058393bc4ca [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/android/webapps/add_to_homescreen_coordinator.h"
#include <utility>
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
#include "chrome/android/chrome_jni_headers/AddToHomescreenCoordinator_jni.h"
#include "chrome/browser/android/tab_android.h"
#include "chrome/browser/android/webapps/add_to_homescreen_installer.h"
#include "chrome/browser/android/webapps/add_to_homescreen_mediator.h"
#include "chrome/browser/android/webapps/add_to_homescreen_params.h"
#include "chrome/browser/banners/app_banner_manager.h"
namespace webapps {
// static
bool AddToHomescreenCoordinator::ShowForAppBanner(
base::WeakPtr<AppBannerManager> weak_manager,
std::unique_ptr<AddToHomescreenParams> params,
base::RepeatingCallback<void(AddToHomescreenInstaller::Event,
const AddToHomescreenParams&)>
event_callback) {
TabAndroid* tab_android =
TabAndroid::FromWebContents(weak_manager->web_contents());
JNIEnv* env = base::android::AttachCurrentThread();
AddToHomescreenMediator* mediator = (AddToHomescreenMediator*)
Java_AddToHomescreenCoordinator_initMvcAndReturnMediator(
env, tab_android->GetJavaObject());
if (!mediator)
return false;
mediator->StartForAppBanner(weak_manager, std::move(params),
std::move(event_callback));
return true;
}
} // namespace webapps