Chromium Code Reviews| 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.init; | 5 package org.chromium.chrome.browser.init; |
| 6 | 6 |
| 7 import android.annotation.SuppressLint; | 7 import android.annotation.SuppressLint; |
| 8 import android.annotation.TargetApi; | 8 import android.annotation.TargetApi; |
| 9 import android.app.Activity; | 9 import android.app.Activity; |
| 10 import android.content.Context; | 10 import android.content.Context; |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 28 | 28 |
| 29 import org.chromium.base.ApiCompatibilityUtils; | 29 import org.chromium.base.ApiCompatibilityUtils; |
| 30 import org.chromium.base.TraceEvent; | 30 import org.chromium.base.TraceEvent; |
| 31 import org.chromium.base.VisibleForTesting; | 31 import org.chromium.base.VisibleForTesting; |
| 32 import org.chromium.base.library_loader.LibraryLoader; | 32 import org.chromium.base.library_loader.LibraryLoader; |
| 33 import org.chromium.base.library_loader.LoaderErrors; | 33 import org.chromium.base.library_loader.LoaderErrors; |
| 34 import org.chromium.base.library_loader.ProcessInitException; | 34 import org.chromium.base.library_loader.ProcessInitException; |
| 35 import org.chromium.chrome.R; | 35 import org.chromium.chrome.R; |
| 36 import org.chromium.chrome.browser.ChromeApplication; | 36 import org.chromium.chrome.browser.ChromeApplication; |
| 37 import org.chromium.chrome.browser.WarmupManager; | 37 import org.chromium.chrome.browser.WarmupManager; |
| 38 import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer; | |
| 38 import org.chromium.chrome.browser.metrics.MemoryUma; | 39 import org.chromium.chrome.browser.metrics.MemoryUma; |
| 39 import org.chromium.chrome.browser.profiles.Profile; | 40 import org.chromium.chrome.browser.profiles.Profile; |
| 40 import org.chromium.chrome.browser.tabmodel.DocumentModeAssassin; | 41 import org.chromium.chrome.browser.tabmodel.DocumentModeAssassin; |
| 41 import org.chromium.chrome.browser.upgrade.UpgradeActivity; | 42 import org.chromium.chrome.browser.upgrade.UpgradeActivity; |
| 42 import org.chromium.ui.base.ActivityWindowAndroid; | 43 import org.chromium.ui.base.ActivityWindowAndroid; |
| 43 import org.chromium.ui.base.DeviceFormFactor; | 44 import org.chromium.ui.base.DeviceFormFactor; |
| 44 import org.chromium.ui.base.WindowAndroid; | 45 import org.chromium.ui.base.WindowAndroid; |
| 45 | 46 |
| 46 import java.lang.reflect.Field; | 47 import java.lang.reflect.Field; |
| 47 | 48 |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 240 | 241 |
| 241 // Kick the user to the MigrationActivity. | 242 // Kick the user to the MigrationActivity. |
| 242 UpgradeActivity.launchInstance(this, getIntent()); | 243 UpgradeActivity.launchInstance(this, getIntent()); |
| 243 | 244 |
| 244 // Don't remove this task -- it may be a DocumentActivity that exist s only in Recents. | 245 // Don't remove this task -- it may be a DocumentActivity that exist s only in Recents. |
| 245 finish(); | 246 finish(); |
| 246 return; | 247 return; |
| 247 } | 248 } |
| 248 | 249 |
| 249 if (!isStartedUpCorrectly(getIntent())) { | 250 if (!isStartedUpCorrectly(getIntent())) { |
| 250 super.onCreate(null); | 251 abortLaunch(); |
| 251 ApiCompatibilityUtils.finishAndRemoveTask(this); | |
| 252 return; | 252 return; |
| 253 } | 253 } |
| 254 | 254 |
| 255 if (requiresFirstRunToBeCompleted(getIntent()) | |
| 256 && FirstRunFlowSequencer.launch(this, getIntent(), false)) { | |
| 257 abortLaunch(); | |
|
Ted C
2017/04/21 04:41:42
pre-L, if you call finish in onCreate does it remo
gone
2017/04/21 17:05:06
Seems to. I've been testing on a KK device.
| |
| 258 return; | |
| 259 } | |
| 260 | |
| 255 super.onCreate(transformSavedInstanceStateForOnCreate(savedInstanceState )); | 261 super.onCreate(transformSavedInstanceStateForOnCreate(savedInstanceState )); |
| 256 mOnCreateTimestampMs = SystemClock.elapsedRealtime(); | 262 mOnCreateTimestampMs = SystemClock.elapsedRealtime(); |
| 257 mOnCreateTimestampUptimeMs = SystemClock.uptimeMillis(); | 263 mOnCreateTimestampUptimeMs = SystemClock.uptimeMillis(); |
| 258 mSavedInstanceState = savedInstanceState; | 264 mSavedInstanceState = savedInstanceState; |
| 259 | 265 |
| 260 mWindowAndroid = createWindowAndroid(); | 266 mWindowAndroid = createWindowAndroid(); |
| 261 if (mWindowAndroid != null) { | 267 if (mWindowAndroid != null) { |
| 262 getWindowAndroid().restoreInstanceState(getSavedInstanceState()); | 268 getWindowAndroid().restoreInstanceState(getSavedInstanceState()); |
| 263 } | 269 } |
| 264 | 270 |
| 265 if (shouldDelayBrowserStartup()) { | 271 if (shouldDelayBrowserStartup()) { |
| 266 // Even if the browser startup is being delayed, the UI still has to be inflated. | 272 // Even if the browser startup is being delayed, the UI still has to be inflated. |
| 267 setContentView(); | 273 setContentView(); |
| 268 if (mLaunchBehindWorkaround != null) mLaunchBehindWorkaround.onSetCo ntentView(); | 274 if (mLaunchBehindWorkaround != null) mLaunchBehindWorkaround.onSetCo ntentView(); |
| 269 } else { | 275 } else { |
| 270 ChromeBrowserInitializer.getInstance(this).handlePreNativeStartup(th is); | 276 ChromeBrowserInitializer.getInstance(this).handlePreNativeStartup(th is); |
| 271 } | 277 } |
| 272 } | 278 } |
| 273 | 279 |
| 280 private void abortLaunch() { | |
| 281 super.onCreate(null); | |
| 282 ApiCompatibilityUtils.finishAndRemoveTask(this); | |
| 283 } | |
| 284 | |
| 274 /** | 285 /** |
| 275 * Call to begin loading the library, if it was delayed. | 286 * Call to begin loading the library, if it was delayed. |
| 276 */ | 287 */ |
| 277 protected void beginLoadingLibrary() { | 288 protected void beginLoadingLibrary() { |
| 278 assert shouldDelayBrowserStartup(); | 289 assert shouldDelayBrowserStartup(); |
| 279 ChromeBrowserInitializer.getInstance(this).handlePreNativeStartup(this); | 290 ChromeBrowserInitializer.getInstance(this).handlePreNativeStartup(this); |
| 280 } | 291 } |
| 281 | 292 |
| 282 /** | 293 /** |
| 283 * Creates an {@link ActivityWindowAndroid} to delegate calls to, if the Act ivity requires it. | 294 * Creates an {@link ActivityWindowAndroid} to delegate calls to, if the Act ivity requires it. |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 297 | 308 |
| 298 /** | 309 /** |
| 299 * Allows subclasses to override the instance state passed to super.onCreate (). | 310 * Allows subclasses to override the instance state passed to super.onCreate (). |
| 300 * The original instance state will still be available via getSavedInstanceS tate(). | 311 * The original instance state will still be available via getSavedInstanceS tate(). |
| 301 */ | 312 */ |
| 302 protected Bundle transformSavedInstanceStateForOnCreate(Bundle savedInstance State) { | 313 protected Bundle transformSavedInstanceStateForOnCreate(Bundle savedInstance State) { |
| 303 return savedInstanceState; | 314 return savedInstanceState; |
| 304 } | 315 } |
| 305 | 316 |
| 306 /** | 317 /** |
| 318 * Overriding this function is almost always wrong. | |
| 319 * @return Whether or not the user needs to go through First Run before usin g this Activity. | |
| 320 */ | |
| 321 protected boolean requiresFirstRunToBeCompleted(Intent intent) { | |
| 322 return true; | |
| 323 } | |
| 324 | |
| 325 /** | |
| 307 * Whether or not the Activity was started up via a valid Intent. | 326 * Whether or not the Activity was started up via a valid Intent. |
| 308 */ | 327 */ |
| 309 protected boolean isStartedUpCorrectly(Intent intent) { | 328 protected boolean isStartedUpCorrectly(Intent intent) { |
| 310 return true; | 329 return true; |
| 311 } | 330 } |
| 312 | 331 |
| 313 /** | 332 /** |
| 314 * @return The elapsed real time for the activity creation in ms. | 333 * @return The elapsed real time for the activity creation in ms. |
| 315 */ | 334 */ |
| 316 protected long getOnCreateTimestampUptimeMs() { | 335 protected long getOnCreateTimestampUptimeMs() { |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 637 getDecorView().setVisibility(View.GONE); | 656 getDecorView().setVisibility(View.GONE); |
| 638 } | 657 } |
| 639 getViewTreeObserver().removeOnPreDrawListener(mPreDrawLi stener); | 658 getViewTreeObserver().removeOnPreDrawListener(mPreDrawLi stener); |
| 640 } | 659 } |
| 641 }); | 660 }); |
| 642 return true; | 661 return true; |
| 643 } | 662 } |
| 644 }; | 663 }; |
| 645 } | 664 } |
| 646 } | 665 } |
| OLD | NEW |