• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 package org.chromium.net;
6 
7 import org.chromium.base.ApplicationState;
8 import org.chromium.base.ApplicationStatus;
9 
10 /**
11  * Regsitration policy which depends on the ApplicationState.
12  */
13 public class RegistrationPolicyApplicationStatus
14         extends NetworkChangeNotifierAutoDetect.RegistrationPolicy
15         implements ApplicationStatus.ApplicationStateListener {
16     private boolean mDestroyed;
17 
18     @Override
init(NetworkChangeNotifierAutoDetect notifier)19     protected void init(NetworkChangeNotifierAutoDetect notifier) {
20         super.init(notifier);
21         ApplicationStatus.registerApplicationStateListener(this);
22         onApplicationStateChange(ApplicationState.UNKNOWN /* unused */);
23     }
24 
25     @Override
destroy()26     protected void destroy() {
27         if (mDestroyed) return;
28         ApplicationStatus.unregisterApplicationStateListener(this);
29         mDestroyed = true;
30     }
31 
32     // ApplicationStatus.ApplicationStateListener
33     @Override
onApplicationStateChange(int newState)34     public void onApplicationStateChange(int newState) {
35         // Use hasVisibleActivities() to determine if one of Chrome's activities
36         // is visible. Using |newState| causes spurious unregister then register
37         // events when flipping between Chrome's Activities, crbug.com/1030229.
38         if (ApplicationStatus.hasVisibleActivities()) {
39             register();
40         } else {
41             unregister();
42         }
43     }
44 }
45