Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1163)

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java

Issue 1414873004: Web app splash screen: add even moar tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@splashscreen-uma
Patch Set: rebase Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappActivityTestBase.java » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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.webapps; 5 package org.chromium.chrome.browser.webapps;
6 6
7 import android.content.Intent; 7 import android.content.Intent;
8 import android.graphics.Bitmap; 8 import android.graphics.Bitmap;
9 import android.graphics.Color; 9 import android.graphics.Color;
10 import android.graphics.drawable.Drawable; 10 import android.graphics.drawable.Drawable;
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 */ 189 */
190 WebappInfo getWebappInfo() { 190 WebappInfo getWebappInfo() {
191 return mWebappInfo; 191 return mWebappInfo;
192 } 192 }
193 193
194 private void initializeSplashScreen() { 194 private void initializeSplashScreen() {
195 final int backgroundColor = mWebappInfo.backgroundColor( 195 final int backgroundColor = mWebappInfo.backgroundColor(
196 ApiCompatibilityUtils.getColor(getResources(), R.color.webapp_de fault_bg)); 196 ApiCompatibilityUtils.getColor(getResources(), R.color.webapp_de fault_bg));
197 197
198 ViewGroup contentView = (ViewGroup) findViewById(android.R.id.content); 198 ViewGroup contentView = (ViewGroup) findViewById(android.R.id.content);
199 mSplashScreen = createSplashScreen(contentView); 199 mSplashScreen = (ViewGroup) LayoutInflater.from(this).inflate(
200 R.layout.webapp_splash_screen, contentView, false);
200 mSplashScreen.setBackgroundColor(backgroundColor); 201 mSplashScreen.setBackgroundColor(backgroundColor);
201 contentView.addView(mSplashScreen); 202 contentView.addView(mSplashScreen);
202 203
203 mWebappUma.splashscreenVisible(); 204 mWebappUma.splashscreenVisible();
204 mWebappUma.recordSplashscreenBackgroundColor(mWebappInfo.hasValidBackgro undColor() 205 mWebappUma.recordSplashscreenBackgroundColor(mWebappInfo.hasValidBackgro undColor()
205 ? WebappUma.SPLASHSCREEN_COLOR_STATUS_CUSTOM 206 ? WebappUma.SPLASHSCREEN_COLOR_STATUS_CUSTOM
206 : WebappUma.SPLASHSCREEN_COLOR_STATUS_DEFAULT); 207 : WebappUma.SPLASHSCREEN_COLOR_STATUS_DEFAULT);
207 mWebappUma.recordSplashscreenThemeColor(mWebappInfo.hasValidThemeColor() 208 mWebappUma.recordSplashscreenThemeColor(mWebappInfo.hasValidThemeColor()
208 ? WebappUma.SPLASHSCREEN_COLOR_STATUS_CUSTOM 209 ? WebappUma.SPLASHSCREEN_COLOR_STATUS_CUSTOM
209 : WebappUma.SPLASHSCREEN_COLOR_STATUS_DEFAULT); 210 : WebappUma.SPLASHSCREEN_COLOR_STATUS_DEFAULT);
210 211
211 WebappDataStorage.open(this, mWebappInfo.id()) 212 WebappDataStorage.open(this, mWebappInfo.id())
212 .getSplashScreenImage(new WebappDataStorage.FetchCallback<Bitmap >() { 213 .getSplashScreenImage(new WebappDataStorage.FetchCallback<Bitmap >() {
213 @Override 214 @Override
214 public void onDataRetrieved(Bitmap splashIcon) { 215 public void onDataRetrieved(Bitmap splashIcon) {
215 setSplashScreenIconAndText(mSplashScreen, splashIcon, ba ckgroundColor); 216 Bitmap displayIcon = splashIcon == null ? mWebappInfo.ic on() : splashIcon;
217 if (displayIcon == null || displayIcon.getWidth() < getR esources()
218 .getDimensionPixelSize(R.dimen.webapp_splash_ima ge_min_size)) {
219 mWebappUma.recordSplashscreenIconType(
220 WebappUma.SPLASHSCREEN_ICON_TYPE_NONE);
221 return;
222 }
223
224 mWebappUma.recordSplashscreenIconType(splashIcon != null
225 ? WebappUma.SPLASHSCREEN_ICON_TYPE_CUSTOM
226 : WebappUma.SPLASHSCREEN_ICON_TYPE_FALLBACK);
227 mWebappUma.recordSplashscreenIconSize(
228 Math.round((float) displayIcon.getWidth()
229 / getResources().getDisplayMetrics().den sity));
230
231 TextView appNameView = (TextView) mSplashScreen.findView ById(
232 R.id.webapp_splash_screen_name);
233 ImageView splashIconView = (ImageView) mSplashScreen.fin dViewById(
234 R.id.webapp_splash_screen_icon);
235 appNameView.setText(mWebappInfo.name());
236 splashIconView.setImageBitmap(displayIcon);
237
238 if (ColorUtils.shoudUseLightForegroundOnBackground(backg roundColor)) {
239 appNameView.setTextColor(ApiCompatibilityUtils.getCo lor(getResources(),
240 R.color.webapp_splash_title_light));
241 }
216 } 242 }
217 }); 243 });
218 } 244 }
219 245
220 private void updateUrlBar() { 246 private void updateUrlBar() {
221 Tab tab = getActivityTab(); 247 Tab tab = getActivityTab();
222 if (tab == null || mUrlBar == null) return; 248 if (tab == null || mUrlBar == null) return;
223 mUrlBar.update(tab.getUrl(), tab.getSecurityLevel()); 249 mUrlBar.update(tab.getUrl(), tab.getSecurityLevel());
224 } 250 }
225 251
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 /** 393 /**
368 * Get the active directory by this web app. 394 * Get the active directory by this web app.
369 * 395 *
370 * @return The directory used for the current web app. 396 * @return The directory used for the current web app.
371 */ 397 */
372 @Override 398 @Override
373 protected final File getActivityDirectory() { 399 protected final File getActivityDirectory() {
374 return mDirectoryManager.getWebappDirectory(this, getId()); 400 return mDirectoryManager.getWebappDirectory(this, getId());
375 } 401 }
376 402
377 @VisibleForTesting
378 ViewGroup createSplashScreen(ViewGroup parentView) {
379 return (ViewGroup) LayoutInflater.from(this)
380 .inflate(R.layout.webapp_splash_screen, parentView, false);
381 }
382
383 @VisibleForTesting
384 void setSplashScreenIconAndText(View splashScreen, Bitmap splashIcon, int ba ckgroundColor) {
385 if (splashScreen == null) return;
386
387 Bitmap displayIcon = splashIcon == null ? mWebappInfo.icon() : splashIco n;
388 if (displayIcon == null || displayIcon.getWidth() < getResources()
389 .getDimensionPixelSize(R.dimen.webapp_splash_image_min_size)) {
390 mWebappUma.recordSplashscreenIconType(WebappUma.SPLASHSCREEN_ICON_TY PE_NONE);
391 return;
392 }
393
394 mWebappUma.recordSplashscreenIconType(splashIcon != null
395 ? WebappUma.SPLASHSCREEN_ICON_TYPE_CUSTOM
396 : WebappUma.SPLASHSCREEN_ICON_TYPE_FALLBACK);
397 mWebappUma.recordSplashscreenIconSize(Math.round(
398 (float) displayIcon.getWidth() / getResources().getDisplayMetric s().density));
399
400 TextView appNameView = (TextView) splashScreen.findViewById(
401 R.id.webapp_splash_screen_name);
402 ImageView splashIconView = (ImageView) splashScreen.findViewById(
403 R.id.webapp_splash_screen_icon);
404 appNameView.setText(mWebappInfo.name());
405 splashIconView.setImageBitmap(displayIcon);
406
407 if (ColorUtils.shoudUseLightForegroundOnBackground(backgroundColor)) {
408 appNameView.setTextColor(ApiCompatibilityUtils.getColor(getResources (),
409 R.color.webapp_splash_title_light));
410 }
411 }
412
413 private void hideSplashScreen(final int reason) { 403 private void hideSplashScreen(final int reason) {
414 if (mSplashScreen == null) return; 404 if (mSplashScreen == null) return;
415 405
416 mSplashScreen.animate() 406 mSplashScreen.animate()
417 .alpha(0f) 407 .alpha(0f)
418 .withEndAction(new Runnable() { 408 .withEndAction(new Runnable() {
419 @Override 409 @Override
420 public void run() { 410 public void run() {
421 ViewGroup contentView = 411 ViewGroup contentView =
422 (ViewGroup) findViewById(android.R.id.content); 412 (ViewGroup) findViewById(android.R.id.content);
423 if (mSplashScreen == null) return; 413 if (mSplashScreen == null) return;
424 contentView.removeView(mSplashScreen); 414 contentView.removeView(mSplashScreen);
425 mSplashScreen = null; 415 mSplashScreen = null;
426 mWebappUma.splashscreenHidden(reason); 416 mWebappUma.splashscreenHidden(reason);
427 } 417 }
428 }); 418 });
429 } 419 }
430 420
431 @VisibleForTesting 421 @VisibleForTesting
432 boolean isSplashScreenVisibleForTest() { 422 boolean isSplashScreenVisibleForTests() {
433 return mSplashScreen != null; 423 return mSplashScreen != null;
434 } 424 }
435 425
436 @VisibleForTesting 426 @VisibleForTesting
427 ViewGroup getSplashScreenForTests() {
428 return mSplashScreen;
429 }
430
431 @VisibleForTesting
437 WebappUrlBar getUrlBarForTests() { 432 WebappUrlBar getUrlBarForTests() {
438 return mUrlBar; 433 return mUrlBar;
439 } 434 }
440 435
441 @VisibleForTesting 436 @VisibleForTesting
442 boolean isUrlBarVisible() { 437 boolean isUrlBarVisible() {
443 return findViewById(R.id.control_container).getVisibility() == View.VISI BLE; 438 return findViewById(R.id.control_container).getVisibility() == View.VISI BLE;
444 } 439 }
445 440
446 @Override 441 @Override
(...skipping 26 matching lines...) Expand all
473 return visible; 468 return visible;
474 } 469 }
475 470
476 // We're temporarily disable CS on webapp since there are some issues. (http ://crbug.com/471950) 471 // We're temporarily disable CS on webapp since there are some issues. (http ://crbug.com/471950)
477 // TODO(changwan): re-enable it once the issues are resolved. 472 // TODO(changwan): re-enable it once the issues are resolved.
478 @Override 473 @Override
479 protected boolean isContextualSearchAllowed() { 474 protected boolean isContextualSearchAllowed() {
480 return false; 475 return false;
481 } 476 }
482 } 477 }
OLDNEW
« no previous file with comments | « no previous file | chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappActivityTestBase.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698