summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/SnapshotTab.java
diff options
context:
space:
mode:
authorBijan Amirzada <bijana@codeaurora.org>2014-02-26 17:08:10 -0800
committerBijan Amirzada <bijana@codeaurora.org>2014-03-04 14:03:36 -0800
commit69b30beb16df7916c7679ed69d70e3ebcdeb2085 (patch)
tree9b81f4a397f041deb5f1ef54e91b92666712b385 /src/com/android/browser/SnapshotTab.java
parent43555c9eb09b318276231eb31dab79f9f41f128c (diff)
downloadandroid_packages_apps_Gello-69b30beb16df7916c7679ed69d70e3ebcdeb2085.tar.gz
android_packages_apps_Gello-69b30beb16df7916c7679ed69d70e3ebcdeb2085.tar.bz2
android_packages_apps_Gello-69b30beb16df7916c7679ed69d70e3ebcdeb2085.zip
Copy of new files from 1599
Modified folder structure - added swe folder Change-Id: I2b48a1635ad0a6406398aa9f1021a1f43baebeef
Diffstat (limited to 'src/com/android/browser/SnapshotTab.java')
-rw-r--r--src/com/android/browser/SnapshotTab.java243
1 files changed, 0 insertions, 243 deletions
diff --git a/src/com/android/browser/SnapshotTab.java b/src/com/android/browser/SnapshotTab.java
deleted file mode 100644
index e14f0959..00000000
--- a/src/com/android/browser/SnapshotTab.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.browser;
-
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.graphics.BitmapFactory;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.util.Log;
-import android.webkit.WebView;
-import android.webkit.WebViewClassic;
-
-import com.android.browser.provider.SnapshotProvider.Snapshots;
-
-import java.io.ByteArrayInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.util.Map;
-import java.util.zip.GZIPInputStream;
-
-
-public class SnapshotTab extends Tab {
-
- private static final String LOGTAG = "SnapshotTab";
-
- private long mSnapshotId;
- private LoadData mLoadTask;
- private WebViewFactory mWebViewFactory;
- private int mBackgroundColor;
- private long mDateCreated;
- private boolean mIsLive;
-
- public SnapshotTab(WebViewController wvcontroller, long snapshotId) {
- super(wvcontroller, null, null);
- mSnapshotId = snapshotId;
- mWebViewFactory = mWebViewController.getWebViewFactory();
- WebView web = mWebViewFactory.createWebView(false);
- setWebView(web);
- loadData();
- }
-
- @Override
- void putInForeground() {
- if (getWebView() == null) {
- WebView web = mWebViewFactory.createWebView(false);
- if (mBackgroundColor != 0) {
- web.setBackgroundColor(mBackgroundColor);
- }
- setWebView(web);
- loadData();
- }
- super.putInForeground();
- }
-
- @Override
- void putInBackground() {
- if (getWebView() == null) return;
- super.putInBackground();
- }
-
- void loadData() {
- if (mLoadTask == null) {
- mLoadTask = new LoadData(this, mContext);
- mLoadTask.execute();
- }
- }
-
- @Override
- void addChildTab(Tab child) {
- if (mIsLive) {
- super.addChildTab(child);
- } else {
- throw new IllegalStateException("Snapshot tabs cannot have child tabs!");
- }
- }
-
- @Override
- public boolean isSnapshot() {
- return !mIsLive;
- }
-
- public long getSnapshotId() {
- return mSnapshotId;
- }
-
- @Override
- public ContentValues createSnapshotValues() {
- if (mIsLive) {
- return super.createSnapshotValues();
- }
- return null;
- }
-
- @Override
- public Bundle saveState() {
- if (mIsLive) {
- return super.saveState();
- }
- return null;
- }
-
- public long getDateCreated() {
- return mDateCreated;
- }
-
- @Override
- public void loadUrl(String url, Map<String, String> headers) {
- if (!mIsLive) {
- mIsLive = true;
- getWebViewClassic().clearViewState();
- }
- super.loadUrl(url, headers);
- }
-
- @Override
- public boolean canGoBack() {
- return super.canGoBack() || mIsLive;
- }
-
- @Override
- public boolean canGoForward() {
- return mIsLive && super.canGoForward();
- }
-
- @Override
- public void goBack() {
- if (super.canGoBack()) {
- super.goBack();
- } else {
- mIsLive = false;
- getWebView().stopLoading();
- loadData();
- }
- }
-
- static class LoadData extends AsyncTask<Void, Void, Cursor> {
-
- static final String[] PROJECTION = new String[] {
- Snapshots._ID, // 0
- Snapshots.URL, // 1
- Snapshots.TITLE, // 2
- Snapshots.FAVICON, // 3
- Snapshots.VIEWSTATE, // 4
- Snapshots.BACKGROUND, // 5
- Snapshots.DATE_CREATED, // 6
- Snapshots.VIEWSTATE_PATH, // 7
- };
- static final int SNAPSHOT_ID = 0;
- static final int SNAPSHOT_URL = 1;
- static final int SNAPSHOT_TITLE = 2;
- static final int SNAPSHOT_FAVICON = 3;
- static final int SNAPSHOT_VIEWSTATE = 4;
- static final int SNAPSHOT_BACKGROUND = 5;
- static final int SNAPSHOT_DATE_CREATED = 6;
- static final int SNAPSHOT_VIEWSTATE_PATH = 7;
-
- private SnapshotTab mTab;
- private ContentResolver mContentResolver;
- private Context mContext;
-
- public LoadData(SnapshotTab t, Context context) {
- mTab = t;
- mContentResolver = context.getContentResolver();
- mContext = context;
- }
-
- @Override
- protected Cursor doInBackground(Void... params) {
- long id = mTab.mSnapshotId;
- Uri uri = ContentUris.withAppendedId(Snapshots.CONTENT_URI, id);
- return mContentResolver.query(uri, PROJECTION, null, null, null);
- }
-
- private InputStream getInputStream(Cursor c) throws FileNotFoundException {
- String path = c.getString(SNAPSHOT_VIEWSTATE_PATH);
- if (!TextUtils.isEmpty(path)) {
- return mContext.openFileInput(path);
- }
- byte[] data = c.getBlob(SNAPSHOT_VIEWSTATE);
- ByteArrayInputStream bis = new ByteArrayInputStream(data);
- return bis;
- }
-
- @Override
- protected void onPostExecute(Cursor result) {
- try {
- if (result.moveToFirst()) {
- mTab.mCurrentState.mTitle = result.getString(SNAPSHOT_TITLE);
- mTab.mCurrentState.mUrl = result.getString(SNAPSHOT_URL);
- byte[] favicon = result.getBlob(SNAPSHOT_FAVICON);
- if (favicon != null) {
- mTab.mCurrentState.mFavicon = BitmapFactory
- .decodeByteArray(favicon, 0, favicon.length);
- }
- WebViewClassic web = mTab.getWebViewClassic();
- if (web != null) {
- InputStream ins = getInputStream(result);
- GZIPInputStream stream = new GZIPInputStream(ins);
- web.loadViewState(stream);
- }
- mTab.mBackgroundColor = result.getInt(SNAPSHOT_BACKGROUND);
- mTab.mDateCreated = result.getLong(SNAPSHOT_DATE_CREATED);
- mTab.mWebViewController.onPageFinished(mTab);
- }
- } catch (Exception e) {
- Log.w(LOGTAG, "Failed to load view state, closing tab", e);
- mTab.mWebViewController.closeTab(mTab);
- } finally {
- if (result != null) {
- result.close();
- }
- mTab.mLoadTask = null;
- }
- }
-
- }
-
- @Override
- protected void persistThumbnail() {
- if (mIsLive) {
- super.persistThumbnail();
- }
- }
-}