diff options
author | Bijan Amirzada <bijana@codeaurora.org> | 2014-02-26 17:08:10 -0800 |
---|---|---|
committer | Bijan Amirzada <bijana@codeaurora.org> | 2014-03-04 14:03:36 -0800 |
commit | 69b30beb16df7916c7679ed69d70e3ebcdeb2085 (patch) | |
tree | 9b81f4a397f041deb5f1ef54e91b92666712b385 /src/com/android/browser/SnapshotTab.java | |
parent | 43555c9eb09b318276231eb31dab79f9f41f128c (diff) | |
download | android_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.java | 243 |
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(); - } - } -} |