Index: chrome/android/java_staging/src/org/chromium/chrome/browser/EmbedContentViewActivity.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/EmbedContentViewActivity.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/EmbedContentViewActivity.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9b757910200084616fb9c214afad444d623895b9 |
--- /dev/null |
+++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/EmbedContentViewActivity.java |
@@ -0,0 +1,111 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser; |
+ |
+import android.app.ActionBar; |
+import android.app.Activity; |
+import android.content.Context; |
+import android.content.Intent; |
+import android.net.Uri; |
+import android.view.Menu; |
+import android.view.MenuItem; |
+import android.view.View; |
+ |
+import com.google.android.apps.chrome.R; |
+ |
+import org.chromium.chrome.browser.firstrun.FirstRunStatus; |
+import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager; |
+import org.chromium.chrome.browser.webapps.FullScreenActivity; |
+import org.chromium.content_public.browser.LoadUrlParams; |
+import org.chromium.ui.base.PageTransition; |
+ |
+/** |
+ * An activity that shows a webpage with a title above it. No navigation controls or menu is |
+ * provided. This is useful for showing a webpage without disrupting with the user's current |
+ * task or their list of tabs, e.g. for showing Terms of Service during first run. |
+ */ |
+public class EmbedContentViewActivity extends FullScreenActivity { |
+ private static final String TAG = "EmbedContentViewActivity"; |
+ |
+ /** An intent extra that will determine what URL is to be loaded initially. */ |
+ protected static final String URL_INTENT_EXTRA = "url"; |
+ /** An intent extra that will determine what title is to be set for the activity. */ |
+ protected static final String TITLE_INTENT_EXTRA = "title"; |
+ |
+ /** |
+ * Starts an EmbedContentViewActivity that shows title and URL for the given |
+ * resource IDs. |
+ */ |
+ public static void show(Context context, int titleResId, int urlResId) { |
+ if (context == null) return; |
+ |
+ Intent intent = new Intent(Intent.ACTION_VIEW); |
+ intent.setClassName(context, EmbedContentViewActivity.class.getName()); |
+ if (context instanceof Activity) { |
+ intent.setFlags( |
+ Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP); |
+ } else { |
+ // Required to handle the case when this is triggered from tests. |
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
+ } |
+ intent.putExtra(TITLE_INTENT_EXTRA, titleResId); |
+ intent.putExtra(URL_INTENT_EXTRA, urlResId); |
+ context.startActivity(intent); |
+ } |
+ |
+ @Override |
+ public void finishNativeInitialization() { |
+ super.finishNativeInitialization(); |
+ getSupportActionBar().setDisplayOptions( |
+ ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP); |
+ |
+ final int titleResId = getIntent().getIntExtra(TITLE_INTENT_EXTRA, 0); |
+ if (titleResId != 0) { |
+ setTitle(getString(titleResId)); |
+ } |
+ |
+ final int urlResId = getIntent().getIntExtra(URL_INTENT_EXTRA, 0); |
+ if (urlResId != 0) { |
+ final String url = getString(urlResId); |
+ getActivityTab().loadUrl(new LoadUrlParams(url, PageTransition.AUTO_TOPLEVEL)); |
+ } |
+ } |
+ |
+ @Override |
+ protected final ChromeFullscreenManager createFullscreenManager(View controlContainer) { |
+ return null; |
+ } |
+ |
+ @Override |
+ public boolean onCreateOptionsMenu(Menu menu) { |
+ boolean retVal = super.onCreateOptionsMenu(menu); |
+ if (!FirstRunStatus.getFirstRunFlowComplete(this)) return retVal; |
+ menu.add(Menu.NONE, R.id.menu_id_open_in_chrome, Menu.NONE, R.string.menu_open_in_chrome); |
+ return true; |
+ } |
+ |
+ @Override |
+ public boolean onOptionsItemSelected(MenuItem item) { |
+ int itemId = item.getItemId(); |
+ if (itemId == android.R.id.home) { |
+ // Handles up navigation |
+ finish(); |
+ return true; |
+ } else if (itemId == R.id.menu_id_open_in_chrome && getActivityTab() != null) { |
+ Intent chromeIntent = new Intent( |
+ Intent.ACTION_VIEW, Uri.parse(getActivityTab().getUrl())); |
+ chromeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
+ IntentHandler.startChromeLauncherActivityForTrustedIntent( |
+ chromeIntent, getApplicationContext()); |
+ return true; |
+ } |
+ return super.onOptionsItemSelected(item); |
+ } |
+ |
+ @Override |
+ protected boolean isContextualSearchAllowed() { |
+ return false; |
+ } |
+} |