• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.tv.settings.connectivity.setup;
18 
19 import android.arch.lifecycle.ViewModel;
20 import android.net.IpConfiguration;
21 import android.net.LinkAddress;
22 import android.net.ProxyInfo;
23 import android.support.annotation.IntDef;
24 import android.text.TextUtils;
25 
26 import java.lang.annotation.Retention;
27 import java.lang.annotation.RetentionPolicy;
28 import java.net.InetAddress;
29 import java.util.HashMap;
30 
31 /**
32  * Class that stores the page information for advanced flow.
33  */
34 public class AdvancedOptionsFlowInfo extends ViewModel {
35     public static final int ADVANCED_OPTIONS = 1;
36     public static final int PROXY_SETTINGS = 2;
37     public static final int PROXY_HOSTNAME = 3;
38     public static final int PROXY_PORT = 4;
39     public static final int PROXY_BYPASS = 5;
40     public static final int IP_SETTINGS = 6;
41     public static final int IP_ADDRESS = 7;
42     public static final int NETWORK_PREFIX_LENGTH = 8;
43     public static final int GATEWAY = 9;
44     public static final int DNS1 = 10;
45     public static final int DNS2 = 11;
46 
47     @IntDef({
48             ADVANCED_OPTIONS,
49             PROXY_SETTINGS,
50             PROXY_HOSTNAME,
51             PROXY_PORT,
52             PROXY_BYPASS,
53             IP_SETTINGS,
54             IP_ADDRESS,
55             NETWORK_PREFIX_LENGTH,
56             GATEWAY,
57             DNS1,
58             DNS2
59     })
60     @Retention(RetentionPolicy.SOURCE)
61     public @interface PAGE {
62     }
63 
64     private IpConfiguration mIpConfiguration;
65     private String mPrintableSsid;
66     private boolean mSettingsFlow;
67     private boolean mCanStart = false;
68 
69     private HashMap<Integer, CharSequence> mPageSummary = new HashMap<>();
70 
71     /**
72      * Store the page summary into a HashMap.
73      *
74      * @param page The page as the key.
75      * @param info The info as the value.
76      */
put(@AGE int page, CharSequence info)77     public void put(@PAGE int page, CharSequence info) {
78         mPageSummary.put(page, info);
79     }
80 
81     /**
82      * Check if the summary of the queried page matches with expected string.
83      *
84      * @param choice The expected string.
85      * @param page   The page queried.
86      * @return true if matched.
87      */
choiceChosen(CharSequence choice, @PAGE int page)88     public boolean choiceChosen(CharSequence choice, @PAGE int page) {
89         if (!mPageSummary.containsKey(page)) {
90             return false;
91         }
92         return TextUtils.equals(choice, mPageSummary.get(page));
93     }
94 
95     /**
96      * Check if the Hashmap contains the summary of a particular page.
97      *
98      * @param page the queried page
99      * @return true if contains.
100      */
containsPage(@AGE int page)101     public boolean containsPage(@PAGE int page) {
102         return mPageSummary.containsKey(page);
103     }
104 
105     /**
106      * Get summary of a page.
107      *
108      * @param page The queried page.
109      * @return The summary of the page.
110      */
get(@AGE int page)111     public String get(@PAGE int page) {
112         if (!mPageSummary.containsKey(page)) {
113             return "";
114         }
115         return mPageSummary.get(page).toString();
116     }
117 
118     /**
119      * Remove the summary of a page.
120      *
121      * @param page The page.
122      */
remove(@AGE int page)123     public void remove(@PAGE int page) {
124         mPageSummary.remove(page);
125     }
126 
getIpConfiguration()127     public IpConfiguration getIpConfiguration() {
128         return mIpConfiguration;
129     }
130 
setIpConfiguration(IpConfiguration ipConfiguration)131     public void setIpConfiguration(IpConfiguration ipConfiguration) {
132         this.mIpConfiguration = ipConfiguration;
133     }
134 
isSettingsFlow()135     public boolean isSettingsFlow() {
136         return mSettingsFlow;
137     }
138 
setSettingsFlow(boolean settingsFlow)139     public void setSettingsFlow(boolean settingsFlow) {
140         mSettingsFlow = settingsFlow;
141     }
142 
setCanStart(boolean canStart)143     public void setCanStart(boolean canStart) {
144         this.mCanStart = canStart;
145     }
146 
147     /**
148      * Determine whether can start advanced flow.
149      *
150      * @return true if can.
151      */
canStart()152     public boolean canStart() {
153         return mCanStart;
154     }
155 
getPrintableSsid()156     public String getPrintableSsid() {
157         return mPrintableSsid;
158     }
159 
setPrintableSsid(String ssid)160     public void setPrintableSsid(String ssid) {
161         this.mPrintableSsid = ssid;
162     }
163 
164     /**
165      * Get the initial DNS.
166      */
getInitialDns(int index)167     public InetAddress getInitialDns(int index) {
168         if (mIpConfiguration != null && mIpConfiguration.getStaticIpConfiguration() != null
169                 && mIpConfiguration.getStaticIpConfiguration().dnsServers == null) {
170             try {
171                 return mIpConfiguration.getStaticIpConfiguration().dnsServers.get(index);
172             } catch (IndexOutOfBoundsException e) {
173                 return null;
174             }
175         }
176         return null;
177     }
178 
179     /**
180      * Get the initial gateway.
181      */
getInitialGateway()182     public InetAddress getInitialGateway() {
183         if (mIpConfiguration != null && mIpConfiguration.getStaticIpConfiguration() != null) {
184             return mIpConfiguration.getStaticIpConfiguration().gateway;
185         } else {
186             return null;
187         }
188     }
189 
190     /**
191      * Get the initial static ip configuration address.
192      */
getInitialLinkAddress()193     public LinkAddress getInitialLinkAddress() {
194         if (mIpConfiguration != null && mIpConfiguration.getStaticIpConfiguration() != null) {
195             return mIpConfiguration.getStaticIpConfiguration().ipAddress;
196         } else {
197             return null;
198         }
199     }
200 
201     /**
202      * Get the initial proxy info.
203      */
getInitialProxyInfo()204     public ProxyInfo getInitialProxyInfo() {
205         if (mIpConfiguration != null) {
206             return mIpConfiguration.getHttpProxy();
207         } else {
208             return null;
209         }
210     }
211 }
212