OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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.page_info; | 5 package org.chromium.chrome.browser.page_info; |
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.AnimatorSet; | 9 import android.animation.AnimatorSet; |
10 import android.animation.ObjectAnimator; | 10 import android.animation.ObjectAnimator; |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 if (mInstantAppIntent == null) mInstantAppButton.setVisibility(View.GONE
); | 426 if (mInstantAppIntent == null) mInstantAppButton.setVisibility(View.GONE
); |
427 | 427 |
428 // Create the dialog. | 428 // Create the dialog. |
429 mDialog = new Dialog(mContext) { | 429 mDialog = new Dialog(mContext) { |
430 private void superDismiss() { | 430 private void superDismiss() { |
431 super.dismiss(); | 431 super.dismiss(); |
432 } | 432 } |
433 | 433 |
434 @Override | 434 @Override |
435 public void dismiss() { | 435 public void dismiss() { |
436 if (DeviceFormFactor.isTablet(mContext) || mDismissWithoutAnimat
ion) { | 436 if (DeviceFormFactor.isTablet() || mDismissWithoutAnimation) { |
437 // Dismiss the dialog without any custom animations on table
t. | 437 // Dismiss the dialog without any custom animations on table
t. |
438 super.dismiss(); | 438 super.dismiss(); |
439 } else { | 439 } else { |
440 Animator animator = createAllAnimations(false); | 440 Animator animator = createAllAnimations(false); |
441 animator.addListener(new AnimatorListenerAdapter() { | 441 animator.addListener(new AnimatorListenerAdapter() { |
442 @Override | 442 @Override |
443 public void onAnimationEnd(Animator animation) { | 443 public void onAnimationEnd(Animator animation) { |
444 // onAnimationEnd is called during the final frame o
f the animation. | 444 // onAnimationEnd is called during the final frame o
f the animation. |
445 // Delay the cleanup by a tiny amount to give this f
rame a chance to be | 445 // Delay the cleanup by a tiny amount to give this f
rame a chance to be |
446 // displayed before we destroy the dialog. | 446 // displayed before we destroy the dialog. |
447 mContainer.postDelayed(new Runnable() { | 447 mContainer.postDelayed(new Runnable() { |
448 @Override | 448 @Override |
449 public void run() { | 449 public void run() { |
450 superDismiss(); | 450 superDismiss(); |
451 } | 451 } |
452 }, CLOSE_CLEANUP_DELAY); | 452 }, CLOSE_CLEANUP_DELAY); |
453 } | 453 } |
454 }); | 454 }); |
455 animator.start(); | 455 animator.start(); |
456 } | 456 } |
457 } | 457 } |
458 }; | 458 }; |
459 mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); | 459 mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); |
460 mDialog.setCanceledOnTouchOutside(true); | 460 mDialog.setCanceledOnTouchOutside(true); |
461 | 461 |
462 // On smaller screens, place the dialog at the top of the screen, and re
move its border. | 462 // On smaller screens, place the dialog at the top of the screen, and re
move its border. |
463 if (!DeviceFormFactor.isTablet(mContext)) { | 463 if (!DeviceFormFactor.isTablet()) { |
464 Window window = mDialog.getWindow(); | 464 Window window = mDialog.getWindow(); |
465 window.setGravity(Gravity.TOP); | 465 window.setGravity(Gravity.TOP); |
466 window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); | 466 window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); |
467 } | 467 } |
468 | 468 |
469 // This needs to come after other member initialization. | 469 // This needs to come after other member initialization. |
470 mNativePageInfoPopup = nativeInit(this, mTab.getWebContents()); | 470 mNativePageInfoPopup = nativeInit(this, mTab.getWebContents()); |
471 final WebContentsObserver webContentsObserver = | 471 final WebContentsObserver webContentsObserver = |
472 new WebContentsObserver(mTab.getWebContents()) { | 472 new WebContentsObserver(mTab.getWebContents()) { |
473 @Override | 473 @Override |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
705 messageBuilder.append(detailsText); | 705 messageBuilder.append(detailsText); |
706 } | 706 } |
707 mConnectionMessage.setText(messageBuilder); | 707 mConnectionMessage.setText(messageBuilder); |
708 if (isConnectionDetailsLinkVisible()) mConnectionMessage.setOnClickListe
ner(this); | 708 if (isConnectionDetailsLinkVisible()) mConnectionMessage.setOnClickListe
ner(this); |
709 } | 709 } |
710 | 710 |
711 /** | 711 /** |
712 * Displays the PageInfoPopup. | 712 * Displays the PageInfoPopup. |
713 */ | 713 */ |
714 private void showDialog() { | 714 private void showDialog() { |
715 if (!DeviceFormFactor.isTablet(mContext)) { | 715 if (!DeviceFormFactor.isTablet()) { |
716 // On smaller screens, make the dialog fill the width of the screen. | 716 // On smaller screens, make the dialog fill the width of the screen. |
717 ScrollView scrollView = new ScrollView(mContext) { | 717 ScrollView scrollView = new ScrollView(mContext) { |
718 @Override | 718 @Override |
719 protected void onMeasure(int widthMeasureSpec, int heightMeasure
Spec) { | 719 protected void onMeasure(int widthMeasureSpec, int heightMeasure
Spec) { |
720 int dialogMaxHeight = mTab.getHeight(); | 720 int dialogMaxHeight = mTab.getHeight(); |
721 if (mIsBottomPopup) { | 721 if (mIsBottomPopup) { |
722 // In Chrome Home, the full URL is showing at all times;
give the scroll | 722 // In Chrome Home, the full URL is showing at all times;
give the scroll |
723 // view a max height so long URLs don't consume the enti
re screen. | 723 // view a max height so long URLs don't consume the enti
re screen. |
724 dialogMaxHeight -= | 724 dialogMaxHeight -= |
725 mContext.getResources().getDimension(R.dimen.min
_touch_target_size); | 725 mContext.getResources().getDimension(R.dimen.min
_touch_target_size); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
761 } | 761 } |
762 | 762 |
763 mDialog.show(); | 763 mDialog.show(); |
764 } | 764 } |
765 | 765 |
766 /** | 766 /** |
767 * Dismiss the popup, and then run a task after the animation has completed
(if there is one). | 767 * Dismiss the popup, and then run a task after the animation has completed
(if there is one). |
768 */ | 768 */ |
769 private void runAfterDismiss(Runnable task) { | 769 private void runAfterDismiss(Runnable task) { |
770 mDialog.dismiss(); | 770 mDialog.dismiss(); |
771 if (DeviceFormFactor.isTablet(mContext)) { | 771 if (DeviceFormFactor.isTablet()) { |
772 task.run(); | 772 task.run(); |
773 } else { | 773 } else { |
774 mContainer.postDelayed(task, FADE_DURATION + CLOSE_CLEANUP_DELAY); | 774 mContainer.postDelayed(task, FADE_DURATION + CLOSE_CLEANUP_DELAY); |
775 } | 775 } |
776 } | 776 } |
777 | 777 |
778 @Override | 778 @Override |
779 public void onClick(View view) { | 779 public void onClick(View view) { |
780 if (view == mSiteSettingsButton) { | 780 if (view == mSiteSettingsButton) { |
781 // Delay while the PageInfoPopup closes. | 781 // Delay while the PageInfoPopup closes. |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
931 /** | 931 /** |
932 * Create animations for showing/hiding the popup. | 932 * Create animations for showing/hiding the popup. |
933 * | 933 * |
934 * Tablets use the default Dialog fade-in instead of sliding in manually. | 934 * Tablets use the default Dialog fade-in instead of sliding in manually. |
935 */ | 935 */ |
936 private Animator createAllAnimations(boolean isEnter) { | 936 private Animator createAllAnimations(boolean isEnter) { |
937 AnimatorSet animation = new AnimatorSet(); | 937 AnimatorSet animation = new AnimatorSet(); |
938 AnimatorSet.Builder builder = null; | 938 AnimatorSet.Builder builder = null; |
939 Animator startAnim; | 939 Animator startAnim; |
940 | 940 |
941 if (DeviceFormFactor.isTablet(mContext)) { | 941 if (DeviceFormFactor.isTablet()) { |
942 // The start time of the entire AnimatorSet is the start time of the
first animation | 942 // The start time of the entire AnimatorSet is the start time of the
first animation |
943 // added to the Builder. We use a blank AnimatorSet on tablet as an
easy way to | 943 // added to the Builder. We use a blank AnimatorSet on tablet as an
easy way to |
944 // co-ordinate this start time. | 944 // co-ordinate this start time. |
945 startAnim = new AnimatorSet(); | 945 startAnim = new AnimatorSet(); |
946 } else { | 946 } else { |
947 startAnim = createDialogSlideAnimator(isEnter); | 947 startAnim = createDialogSlideAnimator(isEnter); |
948 } | 948 } |
949 | 949 |
950 if (isEnter) startAnim.setStartDelay(ENTER_START_DELAY); | 950 if (isEnter) startAnim.setStartDelay(ENTER_START_DELAY); |
951 builder = animation.play(startAnim); | 951 builder = animation.play(startAnim); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1014 new PageInfoPopup(activity, tab, offlinePageCreationDate, contentPublish
er); | 1014 new PageInfoPopup(activity, tab, offlinePageCreationDate, contentPublish
er); |
1015 } | 1015 } |
1016 | 1016 |
1017 private static native long nativeInit(PageInfoPopup popup, WebContents webCo
ntents); | 1017 private static native long nativeInit(PageInfoPopup popup, WebContents webCo
ntents); |
1018 | 1018 |
1019 private native void nativeDestroy(long nativePageInfoPopupAndroid); | 1019 private native void nativeDestroy(long nativePageInfoPopupAndroid); |
1020 | 1020 |
1021 private native void nativeRecordPageInfoAction( | 1021 private native void nativeRecordPageInfoAction( |
1022 long nativePageInfoPopupAndroid, int action); | 1022 long nativePageInfoPopupAndroid, int action); |
1023 } | 1023 } |
OLD | NEW |