OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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.tab; | 5 package org.chromium.chrome.browser.tab; |
6 | 6 |
7 import android.app.Activity; | 7 import android.app.Activity; |
8 import android.app.Application; | 8 import android.app.Application; |
9 import android.content.Context; | 9 import android.content.Context; |
10 import android.content.Intent; | 10 import android.content.Intent; |
11 import android.content.res.Resources; | 11 import android.content.res.Resources; |
12 import android.graphics.Bitmap; | 12 import android.graphics.Bitmap; |
13 import android.graphics.Color; | 13 import android.graphics.Color; |
14 import android.graphics.Point; | 14 import android.graphics.Point; |
15 import android.net.Uri; | 15 import android.net.Uri; |
16 import android.os.Build; | |
17 import android.os.Bundle; | 16 import android.os.Bundle; |
18 import android.os.Handler; | 17 import android.os.Handler; |
19 import android.os.Message; | 18 import android.os.Message; |
20 import android.provider.Browser; | 19 import android.provider.Browser; |
21 import android.text.TextUtils; | 20 import android.text.TextUtils; |
22 import android.util.Log; | 21 import android.util.Log; |
23 import android.view.ContextThemeWrapper; | 22 import android.view.ContextThemeWrapper; |
24 import android.view.View; | 23 import android.view.View; |
25 import android.view.View.OnClickListener; | 24 import android.view.View.OnClickListener; |
26 import android.view.ViewGroup; | 25 import android.view.ViewGroup; |
27 import android.view.ViewGroup.LayoutParams; | 26 import android.view.ViewGroup.LayoutParams; |
28 import android.view.accessibility.AccessibilityEvent; | 27 import android.view.accessibility.AccessibilityEvent; |
29 import android.widget.FrameLayout; | 28 import android.widget.FrameLayout; |
30 | 29 |
31 import org.chromium.base.ApiCompatibilityUtils; | 30 import org.chromium.base.ApiCompatibilityUtils; |
32 import org.chromium.base.ApplicationStatus; | 31 import org.chromium.base.ApplicationStatus; |
33 import org.chromium.base.ContextUtils; | 32 import org.chromium.base.ContextUtils; |
34 import org.chromium.base.ObserverList; | 33 import org.chromium.base.ObserverList; |
35 import org.chromium.base.ObserverList.RewindableIterator; | 34 import org.chromium.base.ObserverList.RewindableIterator; |
36 import org.chromium.base.ThreadUtils; | 35 import org.chromium.base.ThreadUtils; |
37 import org.chromium.base.TraceEvent; | 36 import org.chromium.base.TraceEvent; |
38 import org.chromium.base.VisibleForTesting; | 37 import org.chromium.base.VisibleForTesting; |
39 import org.chromium.base.annotations.CalledByNative; | 38 import org.chromium.base.annotations.CalledByNative; |
40 import org.chromium.base.metrics.RecordHistogram; | 39 import org.chromium.base.metrics.RecordHistogram; |
41 import org.chromium.base.metrics.RecordUserAction; | |
42 import org.chromium.blimp_public.contents.BlimpContents; | 40 import org.chromium.blimp_public.contents.BlimpContents; |
43 import org.chromium.chrome.R; | 41 import org.chromium.chrome.R; |
44 import org.chromium.chrome.browser.ChromeActivity; | 42 import org.chromium.chrome.browser.ChromeActivity; |
45 import org.chromium.chrome.browser.ChromeApplication; | 43 import org.chromium.chrome.browser.ChromeApplication; |
46 import org.chromium.chrome.browser.ChromeFeatureList; | 44 import org.chromium.chrome.browser.ChromeFeatureList; |
47 import org.chromium.chrome.browser.ChromeVersionInfo; | 45 import org.chromium.chrome.browser.ChromeVersionInfo; |
48 import org.chromium.chrome.browser.FrozenNativePage; | 46 import org.chromium.chrome.browser.FrozenNativePage; |
49 import org.chromium.chrome.browser.IntentHandler; | 47 import org.chromium.chrome.browser.IntentHandler; |
50 import org.chromium.chrome.browser.IntentHandler.TabOpenType; | 48 import org.chromium.chrome.browser.IntentHandler.TabOpenType; |
51 import org.chromium.chrome.browser.NativePage; | 49 import org.chromium.chrome.browser.NativePage; |
52 import org.chromium.chrome.browser.SwipeRefreshHandler; | 50 import org.chromium.chrome.browser.SwipeRefreshHandler; |
53 import org.chromium.chrome.browser.TabState; | 51 import org.chromium.chrome.browser.TabState; |
54 import org.chromium.chrome.browser.TabState.WebContentsState; | 52 import org.chromium.chrome.browser.TabState.WebContentsState; |
55 import org.chromium.chrome.browser.UrlConstants; | 53 import org.chromium.chrome.browser.UrlConstants; |
56 import org.chromium.chrome.browser.WarmupManager; | 54 import org.chromium.chrome.browser.WarmupManager; |
57 import org.chromium.chrome.browser.WebContentsFactory; | 55 import org.chromium.chrome.browser.WebContentsFactory; |
58 import org.chromium.chrome.browser.banners.AppBannerManager; | 56 import org.chromium.chrome.browser.banners.AppBannerManager; |
59 import org.chromium.chrome.browser.blimp.BlimpClientContextFactory; | 57 import org.chromium.chrome.browser.blimp.BlimpClientContextFactory; |
60 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; | 58 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; |
61 import org.chromium.chrome.browser.contextmenu.ContextMenuPopulator; | 59 import org.chromium.chrome.browser.contextmenu.ContextMenuPopulator; |
62 import org.chromium.chrome.browser.contextualsearch.ContextualSearchTabHelper; | 60 import org.chromium.chrome.browser.contextualsearch.ContextualSearchTabHelper; |
63 import org.chromium.chrome.browser.crash.MinidumpDirectoryObserver; | |
64 import org.chromium.chrome.browser.crash.MinidumpUploadService; | |
65 import org.chromium.chrome.browser.customtabs.CustomTabActivity; | 61 import org.chromium.chrome.browser.customtabs.CustomTabActivity; |
66 import org.chromium.chrome.browser.download.ChromeDownloadDelegate; | 62 import org.chromium.chrome.browser.download.ChromeDownloadDelegate; |
67 import org.chromium.chrome.browser.fullscreen.FullscreenManager; | 63 import org.chromium.chrome.browser.fullscreen.FullscreenManager; |
68 import org.chromium.chrome.browser.help.HelpAndFeedback; | 64 import org.chromium.chrome.browser.help.HelpAndFeedback; |
69 import org.chromium.chrome.browser.infobar.InfoBarContainer; | 65 import org.chromium.chrome.browser.infobar.InfoBarContainer; |
70 import org.chromium.chrome.browser.media.ui.MediaSessionTabHelper; | 66 import org.chromium.chrome.browser.media.ui.MediaSessionTabHelper; |
71 import org.chromium.chrome.browser.ntp.NativePageAssassin; | 67 import org.chromium.chrome.browser.ntp.NativePageAssassin; |
72 import org.chromium.chrome.browser.ntp.NativePageFactory; | 68 import org.chromium.chrome.browser.ntp.NativePageFactory; |
73 import org.chromium.chrome.browser.offlinepages.OfflinePageItem; | 69 import org.chromium.chrome.browser.offlinepages.OfflinePageItem; |
74 import org.chromium.chrome.browser.omnibox.geo.GeolocationHeader; | 70 import org.chromium.chrome.browser.omnibox.geo.GeolocationHeader; |
(...skipping 12 matching lines...) Expand all Loading... |
87 import org.chromium.chrome.browser.tabmodel.TabModel; | 83 import org.chromium.chrome.browser.tabmodel.TabModel; |
88 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; | 84 import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
89 import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType; | 85 import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType; |
90 import org.chromium.chrome.browser.tabmodel.TabModelImpl; | 86 import org.chromium.chrome.browser.tabmodel.TabModelImpl; |
91 import org.chromium.chrome.browser.tabmodel.TabModelSelector; | 87 import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
92 import org.chromium.chrome.browser.tabmodel.TabReparentingParams; | 88 import org.chromium.chrome.browser.tabmodel.TabReparentingParams; |
93 import org.chromium.chrome.browser.util.ColorUtils; | 89 import org.chromium.chrome.browser.util.ColorUtils; |
94 import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; | 90 import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; |
95 import org.chromium.components.navigation_interception.InterceptNavigationDelega
te; | 91 import org.chromium.components.navigation_interception.InterceptNavigationDelega
te; |
96 import org.chromium.components.security_state.ConnectionSecurityLevel; | 92 import org.chromium.components.security_state.ConnectionSecurityLevel; |
97 import org.chromium.components.variations.VariationsAssociatedData; | |
98 import org.chromium.content.browser.ActivityContentVideoViewEmbedder; | 93 import org.chromium.content.browser.ActivityContentVideoViewEmbedder; |
99 import org.chromium.content.browser.ChildProcessLauncher; | 94 import org.chromium.content.browser.ChildProcessLauncher; |
100 import org.chromium.content.browser.ContentVideoViewEmbedder; | 95 import org.chromium.content.browser.ContentVideoViewEmbedder; |
101 import org.chromium.content.browser.ContentView; | 96 import org.chromium.content.browser.ContentView; |
102 import org.chromium.content.browser.ContentViewClient; | 97 import org.chromium.content.browser.ContentViewClient; |
103 import org.chromium.content.browser.ContentViewCore; | 98 import org.chromium.content.browser.ContentViewCore; |
104 import org.chromium.content.browser.crypto.CipherFactory; | 99 import org.chromium.content.browser.crypto.CipherFactory; |
105 import org.chromium.content_public.browser.GestureStateListener; | 100 import org.chromium.content_public.browser.GestureStateListener; |
106 import org.chromium.content_public.browser.LoadUrlParams; | 101 import org.chromium.content_public.browser.LoadUrlParams; |
107 import org.chromium.content_public.browser.WebContents; | 102 import org.chromium.content_public.browser.WebContents; |
(...skipping 2705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2813 } | 2808 } |
2814 | 2809 |
2815 /** | 2810 /** |
2816 * Performs any subclass-specific tasks when the Tab crashes. | 2811 * Performs any subclass-specific tasks when the Tab crashes. |
2817 */ | 2812 */ |
2818 void handleTabCrash() { | 2813 void handleTabCrash() { |
2819 mIsLoading = false; | 2814 mIsLoading = false; |
2820 mIsBeingRestored = false; | 2815 mIsBeingRestored = false; |
2821 | 2816 |
2822 if (mTabUma != null) mTabUma.onRendererCrashed(); | 2817 if (mTabUma != null) mTabUma.onRendererCrashed(); |
2823 | |
2824 if (!TextUtils.equals("true", VariationsAssociatedData.getVariationParam
Value( | |
2825 MinidumpDirectoryObserver.MINIDUMP_EXPERIMENT_NAME, "Enabled")))
{ | |
2826 try { | |
2827 // Update the most recent minidump file with the logcat. Doing t
his asynchronously | |
2828 // adds a race condition in the case of multiple simultaneously
renderer crashses | |
2829 // but because the data will be the same for all of them it is i
nnocuous. We can | |
2830 // attempt to do this regardless of whether it was a foreground
tab in the event | |
2831 // that it's a real crash and not just android killing the tab. | |
2832 Context context = getApplicationContext(); | |
2833 Intent intent = MinidumpUploadService.createFindAndUploadLastCra
shIntent(context); | |
2834 context.startService(intent); | |
2835 RecordUserAction.record("MobileBreakpadUploadAttempt"); | |
2836 } catch (SecurityException e) { | |
2837 // For KitKat and below, there was a framework bug which cause u
s to not be able to | |
2838 // find our own crash uploading service. Ignore a SecurityExcept
ion here on older | |
2839 // OS versions since the crash will eventually get uploaded on n
ext start. | |
2840 // crbug/542533 | |
2841 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | |
2842 throw e; | |
2843 } | |
2844 } | |
2845 } | |
2846 } | 2818 } |
2847 | 2819 |
2848 /** | 2820 /** |
2849 * @return Whether showing top controls is enabled or not. | 2821 * @return Whether showing top controls is enabled or not. |
2850 */ | 2822 */ |
2851 public boolean isShowingTopControlsEnabled() { | 2823 public boolean isShowingTopControlsEnabled() { |
2852 return mTopControlsVisibilityDelegate.isShowingTopControlsEnabled(); | 2824 return mTopControlsVisibilityDelegate.isShowingTopControlsEnabled(); |
2853 } | 2825 } |
2854 | 2826 |
2855 /** | 2827 /** |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3331 private native void nativeSetInterceptNavigationDelegate(long nativeTabAndro
id, | 3303 private native void nativeSetInterceptNavigationDelegate(long nativeTabAndro
id, |
3332 InterceptNavigationDelegate delegate); | 3304 InterceptNavigationDelegate delegate); |
3333 private native void nativeAttachToTabContentManager(long nativeTabAndroid, | 3305 private native void nativeAttachToTabContentManager(long nativeTabAndroid, |
3334 TabContentManager tabContentManager); | 3306 TabContentManager tabContentManager); |
3335 private native void nativeAttachOverlayWebContents( | 3307 private native void nativeAttachOverlayWebContents( |
3336 long nativeTabAndroid, WebContents webContents, boolean visible); | 3308 long nativeTabAndroid, WebContents webContents, boolean visible); |
3337 private native void nativeDetachOverlayWebContents( | 3309 private native void nativeDetachOverlayWebContents( |
3338 long nativeTabAndroid, WebContents webContents); | 3310 long nativeTabAndroid, WebContents webContents); |
3339 private native boolean nativeHasPrerenderedUrl(long nativeTabAndroid, String
url); | 3311 private native boolean nativeHasPrerenderedUrl(long nativeTabAndroid, String
url); |
3340 } | 3312 } |
OLD | NEW |