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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitializationActivity.java

Issue 2833673003: 🔍 More consistent first run triggering (Closed)
Patch Set: Rebased Created 3 years, 8 months 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
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.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
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
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();
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698