Make SWEAB work with M38 branch
Change-Id: I01cee135afdcde2f7dab53a9f45c0413a6cb813b
diff --git a/src/com/android/browser/Browser.java b/src/com/android/browser/Browser.java
index 01b9706..5a30fad 100644
--- a/src/com/android/browser/Browser.java
+++ b/src/com/android/browser/Browser.java
@@ -22,6 +22,9 @@
import android.util.Log;
import android.os.Process;
+import org.chromium.content.browser.ResourceExtractor;
+import org.chromium.base.PathUtils;
+
import org.codeaurora.swe.Engine;
import com.android.browser.BrowserConfig;
@@ -36,10 +39,15 @@
// Set to true to enable extra debug logging.
final static boolean LOGD_ENABLED = true;
+ private static final String[] MP_MANDATORY_PAKS = new String[] {
+ "webviewchromium.pak",
+ "icudtl.dat"
+ };
+
@Override
public void onCreate() {
super.onCreate();
-
+ initializeApplicationParameters();
if (LOGV_ENABLED)
Log.v(LOGTAG, "Browser.onCreate: this=" + this);
@@ -55,7 +63,13 @@
Engine.initialize(context);
BrowserSettings.initialize(context);
Preloader.initialize(context);
- }
+ }
+
+ }
+
+ public static void initializeApplicationParameters() {
+ ResourceExtractor.setMandatoryPaksToExtract(MP_MANDATORY_PAKS);
+ PathUtils.setPrivateDataDirectorySuffix("android_browser");
}
}
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 82109e9..01cd964 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -61,7 +61,6 @@
import org.json.JSONException;
import org.json.JSONObject;
-import org.codeaurora.net.NetworkServices;
interface BookmarksPageCallbacks {
// Return true if handled
@@ -436,9 +435,6 @@
LoaderManager lm = getLoaderManager();
lm.restartLoader(LOADER_ACCOUNTS, null, this);
- //Notify about anticipated network activity
- NetworkServices.HintUpcomingUserActivity();
-
return mRoot;
}
diff --git a/src/com/android/browser/BrowserPreferencesPage.java b/src/com/android/browser/BrowserPreferencesPage.java
index 9e19d11..fb291c9 100644
--- a/src/com/android/browser/BrowserPreferencesPage.java
+++ b/src/com/android/browser/BrowserPreferencesPage.java
@@ -109,7 +109,8 @@
"com.android.browser.preferences.AdvancedPreferencesFragment",
"com.android.browser.preferences.BandwidthPreferencesFragment",
"com.android.browser.preferences.LabPreferencesFragment",
- "com.android.browser.preferences.AboutPreferencesFragment"));
+ "com.android.browser.preferences.AboutPreferencesFragment",
+ "com.android.browser.AutoFillSettingsFragment"));
@Override
protected boolean isValidFragment(String fragmentName) {
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 14a0793..ea1a60c 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -601,13 +601,29 @@
}
private void shareCurrentPage(Tab tab) {
- if (tab != null) {
- sharePage(mActivity, tab.getTitle(),
- tab.getUrl(), tab.getFavicon(),
- createScreenshot(tab.getWebView(),
- getDesiredThumbnailWidth(mActivity),
- getDesiredThumbnailHeight(mActivity)));
- }
+ if (tab == null || tab.getWebView() == null)
+ return;
+
+ final Tab mytab = tab;
+ final ValueCallback<Bitmap> onScreenshot = new ValueCallback<Bitmap>() {
+ @Override
+ public void onReceiveValue(Bitmap bitmap) {
+ sharePage(mActivity, mytab.getTitle(), mytab.getUrl(),
+ mytab.getFavicon(), bitmap);
+ }
+ };
+
+ createScreenshotAsync(
+ tab.getWebView(),
+ getDesiredThumbnailWidth(mActivity),
+ getDesiredThumbnailHeight(mActivity),
+ new ValueCallback<Bitmap>() {
+ @Override
+ public void onReceiveValue(Bitmap bitmap) {
+ sharePage(mActivity, mytab.getTitle(), mytab.getUrl(),
+ mytab.getFavicon(), bitmap);
+ }
+ });
}
/**
@@ -2145,10 +2161,21 @@
@Override
public void bookmarkCurrentPage() {
- Intent bookmarkIntent = createBookmarkCurrentPageIntent(false);
- if (bookmarkIntent != null) {
- mActivity.startActivity(bookmarkIntent);
- }
+ WebView w = getCurrentTopWebView();
+ if (w == null)
+ return;
+
+ final Intent i = createBookmarkCurrentPageIntent(false);
+ createScreenshotAsync(
+ w, getDesiredThumbnailWidth(mActivity),
+ getDesiredThumbnailHeight(mActivity),
+ new ValueCallback<Bitmap>() {
+ @Override
+ public void onReceiveValue(Bitmap bitmap) {
+ i.putExtra(BrowserContract.Bookmarks.THUMBNAIL, bitmap);
+ mActivity.startActivity(i);
+ }
+ });
}
private void goLive() {
@@ -2378,9 +2405,7 @@
settings.getUserAgentString());
}
}
- i.putExtra(BrowserContract.Bookmarks.THUMBNAIL,
- createScreenshot(w, getDesiredThumbnailWidth(mActivity),
- getDesiredThumbnailHeight(mActivity)));
+ //SWE: Thumbnail will need to be set asynchronously
i.putExtra(BrowserContract.Bookmarks.FAVICON, w.getFavicon());
if (editExisting) {
i.putExtra(AddBookmarkPage.CHECK_FOR_DUPE, true);
@@ -2472,6 +2497,27 @@
return sThumbnailBitmap;
}
+ static void createScreenshotAsync(WebView view, int width, int height,
+ final ValueCallback<Bitmap> cb) {
+ if (view == null || width == 0 || height == 0) {
+ return;
+ }
+
+ view.getContentBitmapAsync(
+ (float) width / view.getWidth(),
+ new Rect(),
+ new ValueCallback<Bitmap>() {
+ @Override
+ public void onReceiveValue(Bitmap bitmap) {
+ Log.e("sudheer", "screensot bitmap: w: " + bitmap.getWidth()
+ + " h: " + bitmap.getHeight());
+ if (bitmap != null)
+ bitmap = bitmap.copy(Bitmap.Config.RGB_565, false);
+ cb.onReceiveValue(bitmap);
+ }});
+ }
+
+
private void updateScreenshot(Tab tab) {
// If this is a bookmarked site, add a screenshot to the database.
// FIXME: Would like to make sure there is actually something to
diff --git a/src/com/android/browser/LocationButton.java b/src/com/android/browser/LocationButton.java
index e805e43..15371ef 100644
--- a/src/com/android/browser/LocationButton.java
+++ b/src/com/android/browser/LocationButton.java
@@ -71,7 +71,8 @@
@Override
protected void onFinishInflate() {
super.onFinishInflate();
- init();
+ //SWE-FIXME : Enable once SWE geolocation api works.
+ //init();
}
private void init() {
diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index 100e8d7..a8f52fe 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -75,7 +75,8 @@
protected void onFinishInflate() {
super.onFinishInflate();
mLockIcon = (ImageView) findViewById(R.id.lock);
- mLocationButton = (LocationButton) findViewById(R.id.location_button);
+ //SWE-FIXME
+ //mLocationButton = (LocationButton) findViewById(R.id.location_button);
mFavicon = (ImageView) findViewById(R.id.favicon);
mUrlInput = (UrlInputView) findViewById(R.id.url);
mUrlInput.setUrlInputListener(this);
@@ -397,7 +398,8 @@
}
public void onTabDataChanged(Tab tab) {
- mLocationButton.onTabDataChanged(tab);
+ //SWE-FIXME
+ //mLocationButton.onTabDataChanged(tab);
}
public void onVoiceResult(String s) {
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 78b3cc8..c789eba 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -25,6 +25,7 @@
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
+import android.graphics.Rect;
import android.os.Message;
import android.util.Log;
import android.util.TypedValue;
@@ -35,6 +36,7 @@
import android.view.MenuItem;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
+import android.webkit.ValueCallback;
import org.codeaurora.swe.WebView;
import android.widget.ImageView;
@@ -122,7 +124,7 @@
if (mAnimScreen == null) {
mAnimScreen = new AnimScreen(mActivity);
// initialize bitmaps
- mAnimScreen.set(getTitleBar(), getWebView());
+ //mAnimScreen.set(getTitleBar(), getWebView());
}
}
}
@@ -271,6 +273,19 @@
mShowNav = true;
dismissIME();
mUiController.setBlockEvents(true);
+
+ getWebView()
+ .getContentBitmapAsync(1.0f,
+ new Rect(),
+ new ValueCallback<Bitmap>() {
+ @Override
+ public void onReceiveValue(Bitmap bitmap) {
+ onShowNavScreenContinue(bitmap);
+ }});
+ }
+
+ void onShowNavScreenContinue(Bitmap viewportBitmap) {
+
if (mNavScreen == null) {
mNavScreen = new NavScreen(mActivity, mUiController, this);
mCustomViewContainer.addView(mNavScreen, COVER_SCREEN_PARAMS);
@@ -287,7 +302,7 @@
mAnimScreen.mTitle.setAlpha(1f);
mAnimScreen.setScaleFactor(1f);
}
- mAnimScreen.set(getTitleBar(), getWebView());
+ mAnimScreen.set(getTitleBar(), viewportBitmap);
if (mAnimScreen.mMain.getParent() == null) {
mCustomViewContainer.addView(mAnimScreen.mMain, COVER_SCREEN_PARAMS);
}
@@ -383,7 +398,7 @@
}
int width = mContentView.getWidth();
int height = mContentView.getHeight();
- Bitmap bm = tab.getFullScreenshot();
+ Bitmap bm = tab.getScreenshot();
if (bm == null)
bm = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
mAnimScreen.set(bm);
@@ -503,6 +518,7 @@
mNavScreen.setVisibility(View.GONE);
mCustomViewContainer.setAlpha(1f);
mCustomViewContainer.setVisibility(View.GONE);
+ mAnimScreen.set(null);
}
@Override
@@ -543,8 +559,8 @@
setScaleFactor(getScaleFactor());
}
- public void set(TitleBar tbar, WebView web) {
- if (tbar == null || web == null) {
+ public void set(TitleBar tbar, Bitmap viewportBitmap) {
+ if (tbar == null) {
return;
}
int embTbarHeight = tbar.getEmbeddedHeight();
@@ -566,29 +582,8 @@
}
mTitle.setImageBitmap(mTitleBarBitmap);
mTitle.setVisibility(View.VISIBLE);
- // SWE: WebView.draw() wouldn't draw anything if SurfaceView is enabled.
- if (mContentBitmap != null) {
- mContentBitmap.recycle();
- mContentBitmap = null;
- }
- mContentBitmap = web.getViewportBitmap();
- if (mContentBitmap == null) {
- int h = web.getHeight() - embTbarHeight;
- if (mContentBitmap == null
- || mContentBitmap.getWidth() != web.getWidth()
- || mContentBitmap.getHeight() != h) {
- mContentBitmap = safeCreateBitmap(web.getWidth(), h);
- }
- if (mContentBitmap != null) {
- Canvas c = new Canvas(mContentBitmap);
- int tx = web.getScrollX();
- int ty = web.getScrollY();
- c.translate(-tx, -ty - embTbarHeight);
- web.draw(c);
- c.setBitmap(null);
- }
- }
- mContent.setImageBitmap(mContentBitmap);
+
+ mContent.setImageBitmap(viewportBitmap);
}
private Bitmap safeCreateBitmap(int width, int height) {
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 4f183fe..5e71aca 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -33,6 +33,7 @@
import android.graphics.Picture;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Bundle;
@@ -1965,8 +1966,9 @@
values.put(Snapshots.BACKGROUND, web.getPageBackgroundColor());
values.put(Snapshots.DATE_CREATED, System.currentTimeMillis());
values.put(Snapshots.FAVICON, compressBitmap(getFavicon()));
- Bitmap screenshot = web.getViewportBitmap();
- values.put(Snapshots.THUMBNAIL, compressBitmap(screenshot));
+ Bitmap screenshot = getScreenshot();
+ if (screenshot != null)
+ values.put(Snapshots.THUMBNAIL, compressBitmap(screenshot));
return values;
}
@@ -2046,44 +2048,26 @@
if (mMainView.getContentWidth() <= 0 || mMainView.getContentHeight() <= 0) {
return;
}
+
+ mMainView
+ .getContentBitmapAsync(
+ (float) mCaptureWidth / mMainView.getWidth(),
+ new Rect(),
+ new ValueCallback<Bitmap>() {
+ @Override
+ public void onReceiveValue(Bitmap bitmap) {
+ onCaptureCallback(bitmap);
+ }});
+ }
+
+ private void onCaptureCallback(Bitmap bitmap) {
+ if (mCapture == null || bitmap == null)
+ return;
+
Canvas c = new Canvas(mCapture);
- int state = c.save();
- float scale = 0;
- Bitmap screenShot = mMainView.getViewportBitmap();
- if (mScreenShot != null) {
- mScreenShot.recycle();
- mScreenShot = null;
- }
- mScreenShot = screenShot;
- if (screenShot != null) {
- //scale based on device orientation
- if (screenShot.getHeight() > screenShot.getWidth()){
- scale = (float) mCaptureWidth / screenShot.getWidth();
- } else {
- scale = (float) mCaptureHeight / screenShot.getHeight();
- }
- mCapture.eraseColor(Color.WHITE);
- c.scale(scale, scale);
- c.drawBitmap(screenShot, 0, 0, null);
- } else {
- final int left = mMainView.getViewScrollX();
- final int top = mMainView.getViewScrollY() + mMainView.getVisibleTitleHeight();
+ mCapture.eraseColor(Color.WHITE);
+ c.drawBitmap(bitmap, 0, 0, null);
- if (mMainView.getHeight() > mMainView.getWidth()){
- scale = mCaptureWidth / (float) mMainView.getWidth();
- } else {
- scale = mCaptureHeight / (float) mMainView.getHeight();
- }
-
- c.translate(-left, -top);
- c.scale(scale, scale, left, top);
- if (mMainView instanceof BrowserWebView) {
- ((BrowserWebView)mMainView).drawContent(c);
- } else {
- mMainView.draw(c);
- }
- }
- c.restoreToCount(state);
// manually anti-alias the edges for the tilt
c.drawRect(0, 0, 1, mCapture.getHeight(), sAlphaPaint);
c.drawRect(mCapture.getWidth() - 1, 0, mCapture.getWidth(),
diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
index e693297..9c96768 100644
--- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
@@ -160,14 +160,15 @@
}
}
});
- GeolocationPermissions.getInstance().getOrigins(new ValueCallback<Set<String> >() {
+ //SWE-FIXME : Uncomment when geolocation is working.
+ /*GeolocationPermissions.getInstance().getOrigins(new ValueCallback<Set<String> >() {
@Override
public void onReceiveValue(Set<String> geolocationOrigins) {
if ((geolocationOrigins != null) && !geolocationOrigins.isEmpty()) {
websiteSettings.setEnabled(true);
}
}
- });
+ });*/
}
@Override