| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/document/CipherKeyActivity.java
|
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/document/CipherKeyActivity.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/document/CipherKeyActivity.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0302290b385742054e392c1eecb70fcbee141889
|
| --- /dev/null
|
| +++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/document/CipherKeyActivity.java
|
| @@ -0,0 +1,74 @@
|
| +// 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.document;
|
| +
|
| +import android.app.Activity;
|
| +import android.content.Context;
|
| +import android.content.Intent;
|
| +import android.os.Bundle;
|
| +
|
| +import org.chromium.content.browser.crypto.CipherFactory;
|
| +
|
| +/**
|
| + * An activity responsible for retaining the incognito cipher key for the duration of an incognito
|
| + * session. The activity gets brought forward for two reasons: to restore the cipher key before a
|
| + * new incognito window is launched or to save the current cipher key. If brought forward to
|
| + * restore, the activity is passed an intent and options to call after the restore process is
|
| + * complete. Otherwise the activity just puts itself in background causing onSaveInstanceState to
|
| + * get called and save the cipher keys to the activity's bundle.
|
| + */
|
| +public class CipherKeyActivity extends Activity {
|
| +
|
| + /**
|
| + * An intent name for specifying the next intent to invoke.
|
| + */
|
| + public static final String FORWARD_INTENT = "forward_intent";
|
| +
|
| + /**
|
| + * An options Bundle to use with intent specified by "forward_intent".
|
| + */
|
| + public static final String FORWARD_OPTIONS = "forward_options";
|
| +
|
| + /**
|
| + * Generates an intent to {@link CipherKeyActivity} to restore cipher keys from the bundle
|
| + * if possible.
|
| + * @param context The context to use.
|
| + * @param forwardIntent The intent cipher key activity will call when it's done.
|
| + * @param options The options to pass into startActivity call of the forward intent.
|
| + * @return The intent.
|
| + */
|
| + public static Intent createIntent(Context context, Intent forwardIntent, Bundle options) {
|
| + Intent intent = new Intent(context, CipherKeyActivity.class);
|
| + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| + if (forwardIntent != null) intent.putExtra(FORWARD_INTENT, forwardIntent);
|
| + if (options != null) intent.putExtra(FORWARD_OPTIONS, options);
|
| + return intent;
|
| + }
|
| +
|
| + @Override
|
| + protected void onCreate(Bundle savedInstanceState) {
|
| + super.onCreate(savedInstanceState);
|
| + if (savedInstanceState != null) {
|
| + CipherFactory.getInstance().restoreFromBundle(savedInstanceState);
|
| + }
|
| + Intent nextIntent = (Intent) getIntent().getParcelableExtra(FORWARD_INTENT);
|
| + if (nextIntent != null) {
|
| + startActivity(nextIntent, (Bundle) getIntent().getParcelableExtra(FORWARD_OPTIONS));
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public void onResume() {
|
| + super.onResume();
|
| + moveTaskToBack(true);
|
| + }
|
| +
|
| + @Override
|
| + protected void onSaveInstanceState(Bundle outState) {
|
| + super.onSaveInstanceState(outState);
|
| + CipherFactory.getInstance().saveToBundle(outState);
|
| + }
|
| +
|
| +}
|
|
|