Index: chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java |
index c161dab2a3d3d01a81d66d944909c31d4fc9b7c5..dbb7e91fa28d69a48ef98c98899efb91ecf150c7 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java |
@@ -37,11 +37,26 @@ import org.chromium.ui.base.ActivityWindowAndroid; |
/** Queries the user's default search engine and shows autocomplete suggestions. */ |
public class SearchActivity extends AsyncInitializationActivity |
implements SnackbarManageable, SearchActivityLocationBarLayout.Delegate { |
+ /** Notified about events happening inside a SearchActivity. */ |
+ public interface SearchActivityObserver { |
+ /** Called when {@link SearchActivity#setContentView} is done. */ |
+ void onSetContentView(); |
+ |
+ /** Called when {@link SearchActivity#finishNativeInitialization} is done. */ |
+ void onFinishNativeInitialization(); |
+ |
+ /** Called when {@link SearchActivity#finishDeferredInitialization} is done. */ |
+ void onFinishDeferredInitialization(); |
+ } |
+ |
private static final String TAG = "searchwidget"; |
/** Setting this field causes the Activity to finish itself immediately for tests. */ |
private static boolean sIsDisabledForTest; |
+ /** Notified about events happening for the SearchActivity. */ |
+ private static SearchActivityObserver sObserver; |
+ |
/** Main content view. */ |
private ViewGroup mContentView; |
@@ -84,14 +99,15 @@ public class SearchActivity extends AsyncInitializationActivity |
mSnackbarManager = new SnackbarManager(this, null); |
mSearchBoxDataProvider = new SearchBoxDataProvider(); |
- // Build the search box. |
mContentView = createContentView(); |
+ setContentView(mContentView); |
+ |
+ // Build the search box. |
mSearchBox = (SearchActivityLocationBarLayout) mContentView.findViewById( |
R.id.search_location_bar); |
mSearchBox.setDelegate(this); |
mSearchBox.setToolbarDataProvider(mSearchBoxDataProvider); |
mSearchBox.initializeControls(new WindowDelegate(getWindow()), getWindowAndroid()); |
- setContentView(mContentView); |
// Kick off everything needed for the user to type into the box. |
// TODO(dfalcantara): We should prevent the user from doing anything while we're running the |
@@ -108,6 +124,8 @@ public class SearchActivity extends AsyncInitializationActivity |
beginLoadingLibrary(); |
} |
}); |
+ |
+ if (sObserver != null) sObserver.onSetContentView(); |
} |
@Override |
@@ -139,6 +157,8 @@ public class SearchActivity extends AsyncInitializationActivity |
} |
}); |
} |
+ |
+ if (sObserver != null) sObserver.onFinishNativeInitialization(); |
} |
private void finishDeferredInitialization(Boolean result) { |
@@ -154,6 +174,8 @@ public class SearchActivity extends AsyncInitializationActivity |
AutocompleteController.nativePrefetchZeroSuggestResults(); |
CustomTabsConnection.getInstance(getApplication()).warmup(0); |
mSearchBox.onDeferredStartup(isVoiceSearchIntent()); |
+ |
+ if (sObserver != null) sObserver.onFinishDeferredInitialization(); |
} |
@Override |
@@ -242,4 +264,10 @@ public class SearchActivity extends AsyncInitializationActivity |
static void disableForTests() { |
sIsDisabledForTest = true; |
} |
+ |
+ /** See {@link #sObserver}. */ |
+ @VisibleForTesting |
+ static void setObserverForTests(SearchActivityObserver observer) { |
+ sObserver = observer; |
+ } |
} |