// 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.view.Menu;
import android.view.MenuItem;
import org.chromium.chrome.browser.firstrun.FirstRunStatus;
import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
import org.chromium.chrome.browser.webapps.FullScreenActivity;
import org.chromium.chrome.browser.widget.ControlContainer;
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;
show(context, context.getString(titleResId), context.getString(urlResId));
}
/**
* Starts an EmbedContentViewActivity that shows the given title and URL.
*/
public static void show(Context context, String title, String url) {
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, title);
intent.putExtra(URL_INTENT_EXTRA, url);
context.startActivity(intent);
}
@Override
public void finishNativeInitialization() {
super.finishNativeInitialization();
getSupportActionBar().setDisplayOptions(
ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
final String titleRes = getIntent().getStringExtra(TITLE_INTENT_EXTRA);
if (titleRes != null) {
setTitle(titleRes);
}
final String urlRes = getIntent().getStringExtra(URL_INTENT_EXTRA);
if (urlRes != null) {
getActivityTab().loadUrl(new LoadUrlParams(urlRes, PageTransition.AUTO_TOPLEVEL));
}
}
@Override
protected final ChromeFullscreenManager createFullscreenManager(
ControlContainer controlContainer) {
return null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean retVal = super.onCreateOptionsMenu(menu);
if (!FirstRunStatus.getFirstRunFlowComplete(this)) return retVal;
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
if (itemId == android.R.id.home) {
// Handles up navigation
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected boolean isContextualSearchAllowed() {
return false;
}
@Override
protected void setStatusBarColor(Tab tab, int color) {
// Intentionally do nothing as EmbedContentViewActivity does not set status bar color.
}
@Override
protected TabDelegate createTabDelegate(boolean incognito) {
return new TabDelegate(incognito);
}
}