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) { |