• 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 /** Registration policy which depends on the ApplicationState. */
11 public class RegistrationPolicyApplicationStatus
12         extends NetworkChangeNotifierAutoDetect.RegistrationPolicy
13         implements ApplicationStatus.ApplicationStateListener {
14     private boolean mDestroyed;
15 
16     @Override
init(NetworkChangeNotifierAutoDetect notifier)17     protected void init(NetworkChangeNotifierAutoDetect notifier) {
18         super.init(notifier);
19         ApplicationStatus.registerApplicationStateListener(this);
20         onApplicationStateChange(ApplicationState.UNKNOWN);
21     }
22 
23     @Override
destroy()24     protected void destroy() {
25         if (mDestroyed) return;
26         ApplicationStatus.unregisterApplicationStateListener(this);
27         mDestroyed = true;
28     }
29 
30     // ApplicationStatus.ApplicationStateListener
31     @Override
onApplicationStateChange(int newState)32     public void onApplicationStateChange(int newState) {
33         // Use hasVisibleActivities() to determine if one of Chrome's activities
34         // is visible. Using |newState| causes spurious unregister then register
35         // events when flipping between Chrome's Activities, crbug.com/1030229.
36         if (ApplicationStatus.hasVisibleActivities()) {
37             register();
38         } else {
39             unregister();
40         }
41     }
42 }
43