blob: 7b182c66b9d874f5cfae969d9eea12dd28b0f538 [file] [log] [blame]
jkarlindb185222015-05-29 12:02:001// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
iclelland8467f462015-10-21 14:03:135#include "chrome/browser/android/background_sync_launcher_android.h"
jkarlindb185222015-05-29 12:02:006
Mugdha Lakhanife82692b2019-02-08 13:08:407#include "base/feature_list.h"
8#include "chrome/browser/android/chrome_feature_list.h"
jkarlindb185222015-05-29 12:02:009#include "content/public/browser/browser_thread.h"
Mugdha Lakhanife82692b2019-02-08 13:08:4010#include "jni/BackgroundSyncBackgroundTaskScheduler_jni.h"
jkarlindb185222015-05-29 12:02:0011#include "jni/BackgroundSyncLauncher_jni.h"
12
iclelland8467f462015-10-21 14:03:1313using content::BrowserThread;
jkarlindb185222015-05-29 12:02:0014
15namespace {
scottmg5e65e3a2017-03-08 08:48:4616base::LazyInstance<BackgroundSyncLauncherAndroid>::DestructorAtExit
17 g_background_sync_launcher = LAZY_INSTANCE_INITIALIZER;
iclellandd054a6f2016-01-11 20:16:1418
19// Disables the Play Services version check for testing on Chromium build bots.
20// TODO(iclelland): Remove this once the bots have their play services package
21// updated before every test run. (https://crbug.com/514449)
22bool disable_play_services_version_check_for_tests = false;
23
24} // namespace
jkarlindb185222015-05-29 12:02:0025
26// static
27BackgroundSyncLauncherAndroid* BackgroundSyncLauncherAndroid::Get() {
28 DCHECK_CURRENTLY_ON(BrowserThread::UI);
29
30 return g_background_sync_launcher.Pointer();
31}
32
33// static
jkarlin4302d712015-11-10 10:59:0134void BackgroundSyncLauncherAndroid::LaunchBrowserIfStopped(
35 bool launch_when_next_online,
36 int64_t min_delay_ms) {
jkarlindb185222015-05-29 12:02:0037 DCHECK_CURRENTLY_ON(BrowserThread::UI);
38
jkarlin4302d712015-11-10 10:59:0139 Get()->LaunchBrowserIfStoppedImpl(launch_when_next_online, min_delay_ms);
jkarlindb185222015-05-29 12:02:0040}
41
jkarlin4302d712015-11-10 10:59:0142void BackgroundSyncLauncherAndroid::LaunchBrowserIfStoppedImpl(
43 bool launch_when_next_online,
44 int64_t min_delay_ms) {
jkarlindb185222015-05-29 12:02:0045 DCHECK_CURRENTLY_ON(BrowserThread::UI);
46
jkarlinfe08f132015-11-06 13:18:4147 JNIEnv* env = base::android::AttachCurrentThread();
Mugdha Lakhanife82692b2019-02-08 13:08:4048
49 if (!base::FeatureList::IsEnabled(
50 chrome::android::kBackgroundTaskSchedulerForBackgroundSync)) {
51 Java_BackgroundSyncLauncher_launchBrowserIfStopped(
52 env, java_gcm_network_manager_launcher_, launch_when_next_online,
53 min_delay_ms);
54 return;
55 }
56
57 Java_BackgroundSyncBackgroundTaskScheduler_launchBrowserIfStopped(
58 env, java_background_sync_background_task_scheduler_launcher_,
59 launch_when_next_online, min_delay_ms);
jkarlindb185222015-05-29 12:02:0060}
61
62// static
iclellandd054a6f2016-01-11 20:16:1463void BackgroundSyncLauncherAndroid::SetPlayServicesVersionCheckDisabledForTests(
64 bool disabled) {
65 DCHECK_CURRENTLY_ON(BrowserThread::UI);
66 disable_play_services_version_check_for_tests = disabled;
67}
68
69// static
70bool BackgroundSyncLauncherAndroid::ShouldDisableBackgroundSync() {
71 DCHECK_CURRENTLY_ON(BrowserThread::UI);
72 if (disable_play_services_version_check_for_tests) {
73 return false;
74 }
75 return Java_BackgroundSyncLauncher_shouldDisableBackgroundSync(
wnwen95d6e7202017-04-06 14:09:4076 base::android::AttachCurrentThread());
iclellandd054a6f2016-01-11 20:16:1477}
78
jkarlindb185222015-05-29 12:02:0079BackgroundSyncLauncherAndroid::BackgroundSyncLauncherAndroid() {
80 DCHECK_CURRENTLY_ON(BrowserThread::UI);
81
82 JNIEnv* env = base::android::AttachCurrentThread();
Mugdha Lakhanife82692b2019-02-08 13:08:4083
84 if (!base::FeatureList::IsEnabled(
85 chrome::android::kBackgroundTaskSchedulerForBackgroundSync)) {
86 java_gcm_network_manager_launcher_.Reset(
87 Java_BackgroundSyncLauncher_create(env));
88 return;
89 }
90
91 java_background_sync_background_task_scheduler_launcher_.Reset(
92 Java_BackgroundSyncBackgroundTaskScheduler_getInstance(env));
jkarlindb185222015-05-29 12:02:0093}
94
95BackgroundSyncLauncherAndroid::~BackgroundSyncLauncherAndroid() {
96 DCHECK_CURRENTLY_ON(BrowserThread::UI);
97
Mugdha Lakhanife82692b2019-02-08 13:08:4098 if (base::FeatureList::IsEnabled(
99 chrome::android::kBackgroundTaskSchedulerForBackgroundSync)) {
100 return;
101 }
102
jkarlindb185222015-05-29 12:02:00103 JNIEnv* env = base::android::AttachCurrentThread();
Mugdha Lakhanife82692b2019-02-08 13:08:40104 Java_BackgroundSyncLauncher_destroy(env, java_gcm_network_manager_launcher_);
jkarlindb185222015-05-29 12:02:00105}