| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.physicalweb; | 5 package org.chromium.chrome.browser.physicalweb; |
| 6 | 6 |
| 7 import android.animation.Animator; | 7 import android.animation.Animator; |
| 8 import android.animation.AnimatorListenerAdapter; | 8 import android.animation.AnimatorListenerAdapter; |
| 9 import android.animation.ObjectAnimator; | 9 import android.animation.ObjectAnimator; |
| 10 import android.content.Context; | 10 import android.content.Context; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 import android.widget.AdapterView; | 25 import android.widget.AdapterView; |
| 26 import android.widget.ImageView; | 26 import android.widget.ImageView; |
| 27 import android.widget.ListView; | 27 import android.widget.ListView; |
| 28 import android.widget.TextView; | 28 import android.widget.TextView; |
| 29 | 29 |
| 30 import org.chromium.base.ApiCompatibilityUtils; | 30 import org.chromium.base.ApiCompatibilityUtils; |
| 31 import org.chromium.base.ContextUtils; | 31 import org.chromium.base.ContextUtils; |
| 32 import org.chromium.base.Log; | 32 import org.chromium.base.Log; |
| 33 import org.chromium.base.VisibleForTesting; | 33 import org.chromium.base.VisibleForTesting; |
| 34 import org.chromium.chrome.R; | 34 import org.chromium.chrome.R; |
| 35 import org.chromium.chrome.browser.ChromeApplication; | |
| 36 import org.chromium.chrome.browser.widget.FadingShadow; | 35 import org.chromium.chrome.browser.widget.FadingShadow; |
| 37 import org.chromium.chrome.browser.widget.FadingShadowView; | 36 import org.chromium.chrome.browser.widget.FadingShadowView; |
| 38 | 37 |
| 39 import java.util.Collection; | 38 import java.util.Collection; |
| 40 | 39 |
| 41 /** | 40 /** |
| 42 * This activity displays a list of nearby URLs as stored in the {@link UrlManag
er}. | 41 * This activity displays a list of nearby URLs as stored in the {@link UrlManag
er}. |
| 43 * This activity does not and should not rely directly or indirectly on the nati
ve library. | 42 * This activity does not and should not rely directly or indirectly on the nati
ve library. |
| 44 */ | 43 */ |
| 45 public class ListUrlsActivity extends AppCompatActivity implements AdapterView.O
nItemClickListener, | 44 public class ListUrlsActivity extends AppCompatActivity implements AdapterView.O
nItemClickListener, |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 }); | 114 }); |
| 116 | 115 |
| 117 mPwsClient = new PwsClientImpl(this); | 116 mPwsClient = new PwsClientImpl(this); |
| 118 int referer = getIntent().getIntExtra(REFERER_KEY, 0); | 117 int referer = getIntent().getIntExtra(REFERER_KEY, 0); |
| 119 if (savedInstanceState == null) { // Ensure this is a newly-created act
ivity. | 118 if (savedInstanceState == null) { // Ensure this is a newly-created act
ivity. |
| 120 PhysicalWebUma.onActivityReferral(this, referer); | 119 PhysicalWebUma.onActivityReferral(this, referer); |
| 121 } | 120 } |
| 122 mIsInitialDisplayRecorded = false; | 121 mIsInitialDisplayRecorded = false; |
| 123 mIsRefreshing = false; | 122 mIsRefreshing = false; |
| 124 mIsRefreshUserInitiated = false; | 123 mIsRefreshUserInitiated = false; |
| 125 mPhysicalWebBleClient = | 124 mPhysicalWebBleClient = PhysicalWebBleClient.getInstance(); |
| 126 PhysicalWebBleClient.getInstance((ChromeApplication) getApplicationC
ontext()); | |
| 127 } | 125 } |
| 128 | 126 |
| 129 @Override | 127 @Override |
| 130 public boolean onCreateOptionsMenu(Menu menu) { | 128 public boolean onCreateOptionsMenu(Menu menu) { |
| 131 int tintColor = ContextCompat.getColor(this, R.color.light_normal_color)
; | 129 int tintColor = ContextCompat.getColor(this, R.color.light_normal_color)
; |
| 132 | 130 |
| 133 Drawable tintedRefresh = ContextCompat.getDrawable(this, R.drawable.btn_
toolbar_reload); | 131 Drawable tintedRefresh = ContextCompat.getDrawable(this, R.drawable.btn_
toolbar_reload); |
| 134 tintedRefresh.setColorFilter(tintColor, PorterDuff.Mode.SRC_IN); | 132 tintedRefresh.setColorFilter(tintColor, PorterDuff.Mode.SRC_IN); |
| 135 menu.add(0, R.id.menu_id_refresh, 1, R.string.physical_web_refresh) | 133 menu.add(0, R.id.menu_id_refresh, 1, R.string.physical_web_refresh) |
| 136 .setIcon(tintedRefresh) | 134 .setIcon(tintedRefresh) |
| (...skipping 25 matching lines...) Expand all Loading... |
| 162 mPhysicalWebBleClient.foregroundSubscribe(this); | 160 mPhysicalWebBleClient.foregroundSubscribe(this); |
| 163 } | 161 } |
| 164 | 162 |
| 165 private void foregroundUnsubscribe() { | 163 private void foregroundUnsubscribe() { |
| 166 mPhysicalWebBleClient.foregroundUnsubscribe(); | 164 mPhysicalWebBleClient.foregroundUnsubscribe(); |
| 167 } | 165 } |
| 168 | 166 |
| 169 @Override | 167 @Override |
| 170 protected void onStart() { | 168 protected void onStart() { |
| 171 super.onStart(); | 169 super.onStart(); |
| 172 UrlManager.getInstance(this).addObserver(this); | 170 UrlManager.getInstance().addObserver(this); |
| 173 } | 171 } |
| 174 | 172 |
| 175 @Override | 173 @Override |
| 176 protected void onResume() { | 174 protected void onResume() { |
| 177 super.onResume(); | 175 super.onResume(); |
| 178 foregroundSubscribe(); | 176 foregroundSubscribe(); |
| 179 startRefresh(false, false); | 177 startRefresh(false, false); |
| 180 | 178 |
| 181 int bottomBarDisplayCount = getBottomBarDisplayCount(); | 179 int bottomBarDisplayCount = getBottomBarDisplayCount(); |
| 182 if (bottomBarDisplayCount < BOTTOM_BAR_DISPLAY_LIMIT) { | 180 if (bottomBarDisplayCount < BOTTOM_BAR_DISPLAY_LIMIT) { |
| 183 showBottomBar(); | 181 showBottomBar(); |
| 184 setBottomBarDisplayCount(bottomBarDisplayCount + 1); | 182 setBottomBarDisplayCount(bottomBarDisplayCount + 1); |
| 185 } | 183 } |
| 186 } | 184 } |
| 187 | 185 |
| 188 @Override | 186 @Override |
| 189 protected void onPause() { | 187 protected void onPause() { |
| 190 foregroundUnsubscribe(); | 188 foregroundUnsubscribe(); |
| 191 super.onPause(); | 189 super.onPause(); |
| 192 } | 190 } |
| 193 | 191 |
| 194 @Override | 192 @Override |
| 195 public void onRefresh() { | 193 public void onRefresh() { |
| 196 startRefresh(true, true); | 194 startRefresh(true, true); |
| 197 } | 195 } |
| 198 | 196 |
| 199 @Override | 197 @Override |
| 200 protected void onStop() { | 198 protected void onStop() { |
| 201 UrlManager.getInstance(this).removeObserver(this); | 199 UrlManager.getInstance().removeObserver(this); |
| 202 super.onStop(); | 200 super.onStop(); |
| 203 } | 201 } |
| 204 | 202 |
| 205 private void resolve(Collection<UrlInfo> urls, final boolean isUserInitiated
) { | 203 private void resolve(Collection<UrlInfo> urls, final boolean isUserInitiated
) { |
| 206 final long timestamp = SystemClock.elapsedRealtime(); | 204 final long timestamp = SystemClock.elapsedRealtime(); |
| 207 mPwsClient.resolve(urls, new PwsClient.ResolveScanCallback() { | 205 mPwsClient.resolve(urls, new PwsClient.ResolveScanCallback() { |
| 208 @Override | 206 @Override |
| 209 public void onPwsResults(Collection<PwsResult> pwsResults) { | 207 public void onPwsResults(Collection<PwsResult> pwsResults) { |
| 210 long duration = SystemClock.elapsedRealtime() - timestamp; | 208 long duration = SystemClock.elapsedRealtime() - timestamp; |
| 211 if (isUserInitiated) { | 209 if (isUserInitiated) { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 if (mIsRefreshing) { | 258 if (mIsRefreshing) { |
| 261 return; | 259 return; |
| 262 } | 260 } |
| 263 | 261 |
| 264 mIsRefreshing = true; | 262 mIsRefreshing = true; |
| 265 mIsRefreshUserInitiated = isUserInitiated; | 263 mIsRefreshUserInitiated = isUserInitiated; |
| 266 | 264 |
| 267 // Clear the list adapter to trigger the empty list display. | 265 // Clear the list adapter to trigger the empty list display. |
| 268 mAdapter.clear(); | 266 mAdapter.clear(); |
| 269 | 267 |
| 270 Collection<UrlInfo> urls = UrlManager.getInstance(this).getUrls(true); | 268 Collection<UrlInfo> urls = UrlManager.getInstance().getUrls(true); |
| 271 | 269 |
| 272 // Check the Physical Web preference to ensure we do not resolve URLs wh
en Physical Web is | 270 // Check the Physical Web preference to ensure we do not resolve URLs wh
en Physical Web is |
| 273 // off or onboarding. Normally the user will not reach this activity unl
ess the preference | 271 // off or onboarding. Normally the user will not reach this activity unl
ess the preference |
| 274 // is explicitly enabled, but there is a button on the diagnostics page
that launches into | 272 // is explicitly enabled, but there is a button on the diagnostics page
that launches into |
| 275 // the activity without checking the preference state. | 273 // the activity without checking the preference state. |
| 276 if (urls.isEmpty() || !PhysicalWeb.isPhysicalWebPreferenceEnabled(this))
{ | 274 if (urls.isEmpty() || !PhysicalWeb.isPhysicalWebPreferenceEnabled()) { |
| 277 finishRefresh(); | 275 finishRefresh(); |
| 278 } else { | 276 } else { |
| 279 // Show the swipe-to-refresh busy indicator for refreshes initiated
by a swipe. | 277 // Show the swipe-to-refresh busy indicator for refreshes initiated
by a swipe. |
| 280 if (isSwipeInitiated) { | 278 if (isSwipeInitiated) { |
| 281 mSwipeRefreshWidget.setRefreshing(true); | 279 mSwipeRefreshWidget.setRefreshing(true); |
| 282 } | 280 } |
| 283 | 281 |
| 284 // Update the empty list view to show a scanning animation. | 282 // Update the empty list view to show a scanning animation. |
| 285 mEmptyListText.setText(R.string.physical_web_empty_list_scanning); | 283 mEmptyListText.setText(R.string.physical_web_empty_list_scanning); |
| 286 | 284 |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 @VisibleForTesting | 388 @VisibleForTesting |
| 391 void overridePwsClientForTesting(PwsClient pwsClient) { | 389 void overridePwsClientForTesting(PwsClient pwsClient) { |
| 392 mPwsClient = pwsClient; | 390 mPwsClient = pwsClient; |
| 393 } | 391 } |
| 394 | 392 |
| 395 @VisibleForTesting | 393 @VisibleForTesting |
| 396 void overrideContextForTesting(Context context) { | 394 void overrideContextForTesting(Context context) { |
| 397 mContext = context; | 395 mContext = context; |
| 398 } | 396 } |
| 399 } | 397 } |
| OLD | NEW |