| Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
| index 6ea48095ad3cec016f3533bb3fdc9f9ae29726c9..d4addccd93ecf67f342aa7511f90a83d09c82cc5 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
| @@ -70,6 +70,7 @@ import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
|
| import org.chromium.chrome.browser.firstrun.FirstRunStatus;
|
| import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
|
| import org.chromium.chrome.browser.fullscreen.ComposedBrowserControlsVisibilityDelegate;
|
| +import org.chromium.chrome.browser.historyreport.AppIndexingReporter;
|
| import org.chromium.chrome.browser.incognito.IncognitoNotificationManager;
|
| import org.chromium.chrome.browser.infobar.DataReductionPromoInfoBar;
|
| import org.chromium.chrome.browser.locale.LocaleManager;
|
| @@ -115,6 +116,7 @@ import org.chromium.content.browser.ContentVideoView;
|
| import org.chromium.content.browser.ContentViewCore;
|
| import org.chromium.content.browser.crypto.CipherFactory;
|
| import org.chromium.content.common.ContentSwitches;
|
| +import org.chromium.content_public.browser.JavaScriptCallback;
|
| import org.chromium.content_public.browser.LoadUrlParams;
|
| import org.chromium.content_public.common.Referrer;
|
| import org.chromium.ui.base.DeviceFormFactor;
|
| @@ -122,6 +124,9 @@ import org.chromium.ui.base.PageTransition;
|
| import org.chromium.ui.base.WindowAndroid;
|
| import org.chromium.ui.widget.Toast;
|
|
|
| +import java.io.BufferedReader;
|
| +import java.io.IOException;
|
| +import java.io.InputStreamReader;
|
| import java.lang.annotation.Retention;
|
| import java.lang.annotation.RetentionPolicy;
|
| import java.lang.ref.WeakReference;
|
| @@ -194,6 +199,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| /** The task id of the activity that tabs were merged into. */
|
| private static int sMergedInstanceTaskId;
|
|
|
| + private static String sParseStructuredDataScript;
|
| +
|
| private final ActivityStopMetrics mActivityStopMetrics = new ActivityStopMetrics();
|
|
|
| private FindToolbarManager mFindToolbarManager;
|
| @@ -1033,6 +1040,51 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode
|
| }
|
|
|
| @Override
|
| + public void onPageLoadFinished(final Tab tab) {
|
| + if (tab.isIncognito()) {
|
| + Log.v(TAG, "Not indexing incognito page.");
|
| + return;
|
| + }
|
| + // Read sParseStructuredDataScript from resources if not already initialized.
|
| + if (sParseStructuredDataScript == null) {
|
| + BufferedReader reader = null;
|
| + try {
|
| + reader = new BufferedReader(
|
| + new InputStreamReader(getResources().openRawResource(R.raw.parse)));
|
| + StringBuilder fullText = new StringBuilder();
|
| + String line;
|
| + while ((line = reader.readLine()) != null) {
|
| + fullText.append(line);
|
| + }
|
| + sParseStructuredDataScript = fullText.toString();
|
| + } catch (IOException e) {
|
| + Log.e(TAG, "Failed to load asset." + e);
|
| + } finally {
|
| + if (reader != null) {
|
| + try {
|
| + reader.close();
|
| + } catch (IOException e) {
|
| + Log.e(TAG, "Failed to close asset." + e);
|
| + }
|
| + }
|
| + }
|
| + }
|
| + tab.getWebContents().evaluateJavaScriptForTests(
|
| + sParseStructuredDataScript,
|
| + new JavaScriptCallback() {
|
| + @Override
|
| + public void handleJavaScriptResult(String jsonResult) {
|
| + if ("null".equals(jsonResult)) {
|
| + return;
|
| + }
|
| + AppIndexingReporter.getInstance().reportEntityJsonLd(
|
| + tab.getUrl(), jsonResult);
|
| + }
|
| + });
|
| + }
|
| +
|
| +
|
| + @Override
|
| public void onDidNavigateMainFrame(Tab tab, String url, String baseUrl,
|
| boolean isNavigationToDifferentPage, boolean isFragmentNavigation,
|
| int statusCode) {
|
|
|