예제 #1
0
  /**
   * Handle all necessary tasks that can be delayed until initialization completes.
   *
   * @param activityCreationTimeMs The time of creation for the activity this toolbar belongs to.
   * @param activityName Simple class name for the activity this toolbar belongs to.
   */
  public void onDeferredStartup(final long activityCreationTimeMs, final String activityName) {
    // Record startup performance statistics
    long elapsedTime = SystemClock.elapsedRealtime() - activityCreationTimeMs;
    if (elapsedTime < RECORD_UMA_PERFORMANCE_METRICS_DELAY_MS) {
      ThreadUtils.postOnUiThreadDelayed(
          new Runnable() {
            @Override
            public void run() {
              onDeferredStartup(activityCreationTimeMs, activityName);
            }
          },
          RECORD_UMA_PERFORMANCE_METRICS_DELAY_MS - elapsedTime);
    }
    RecordHistogram.recordTimesHistogram(
        "MobileStartup.ToolbarFirstDrawTime." + activityName,
        mToolbar.getFirstDrawTime() - activityCreationTimeMs,
        TimeUnit.MILLISECONDS);

    long firstFocusTime = mToolbar.getLocationBar().getFirstUrlBarFocusTime();
    if (firstFocusTime != 0) {
      RecordHistogram.recordCustomTimesHistogram(
          "MobileStartup.ToolbarFirstFocusTime." + activityName,
          firstFocusTime - activityCreationTimeMs,
          MIN_FOCUS_TIME_FOR_UMA_HISTOGRAM_MS,
          MAX_FOCUS_TIME_FOR_UMA_HISTOGRAM_MS,
          TimeUnit.MILLISECONDS,
          50);
    }
  }
예제 #2
0
  @Override
  public void didCommitProvisionalLoadForFrame(
      long frameId, boolean isMainFrame, String url, int transitionType) {
    if (isMainFrame && UmaUtils.isRunningApplicationStart()) {
      // Currently it takes about 2000ms to commit a navigation if the measurement
      // begins very early in the browser start. How many buckets (b) are needed to
      // explore the _typical_ values with granularity 100ms and a maximum duration
      // of 1 minute?
      //   s^{n+1} / s^{n} = 2100 / 2000
      //   s = 1.05
      //   s^b = 60000
      //   b = ln(60000) / ln(1.05) ~= 225
      RecordHistogram.recordCustomTimesHistogram(
          "Startup.FirstCommitNavigationTime",
          SystemClock.uptimeMillis() - UmaUtils.getMainEntryPointTime(),
          1,
          60000 /* 1 minute */,
          TimeUnit.MILLISECONDS,
          225);
      UmaUtils.setRunningApplicationStart(false);
    }

    if (isMainFrame) {
      mTab.setIsTabStateDirty(true);
      mTab.updateTitle();
    }

    RewindableIterator<TabObserver> observers = mTab.getTabObservers();
    while (observers.hasNext()) {
      observers
          .next()
          .onDidCommitProvisionalLoadForFrame(mTab, frameId, isMainFrame, url, transitionType);
    }

    observers.rewind();
    while (observers.hasNext()) {
      observers.next().onUrlUpdated(mTab);
    }

    if (!isMainFrame) return;
    mTab.handleDidCommitProvisonalLoadForFrame(url, transitionType);
  }