From 6827bb9946748a0ec056f56c4f8e5c9a297b13e7 Mon Sep 17 00:00:00 2001 From: Anthony Restaino Date: Sat, 29 Jun 2013 11:09:24 -0400 Subject: [PATCH] 2.5.0.1 FIxed full-screen video, changed some animations, changed icon, fixed some problems with incognito mode --- AndroidManifest.xml | 4 +- README | 5 - res/anim/slide_down.xml | 13 +- res/anim/slide_up.xml | 14 +- res/drawable-hdpi/ic_launcher.png | Bin 5425 -> 6482 bytes res/drawable-mdpi/ic_launcher.png | Bin 3221 -> 3263 bytes res/drawable-xhdpi/ic_launcher.png | Bin 7843 -> 8236 bytes src/acr/browser/barebones/Barebones.java | 258 ++++++---- src/acr/browser/barebones/BookmarkPage.java | 4 +- src/acr/browser/barebones/CustomWebView.java | 51 +- src/acr/browser/barebones/HistoryPage.java | 4 +- src/acr/browser/barebones/IncognitoMode.java | 479 +++++++++++------- .../browser/barebones/IncognitoWebView.java | 68 +++ src/acr/browser/barebones/SpaceTokenizer.java | 10 +- 14 files changed, 578 insertions(+), 332 deletions(-) create mode 100644 src/acr/browser/barebones/IncognitoWebView.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 75951c4..26b1f06 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="44" + android:versionName="2.5.0.1" > - - - + + + \ No newline at end of file diff --git a/res/anim/slide_up.xml b/res/anim/slide_up.xml index 516c7cc..ee24c69 100644 --- a/res/anim/slide_up.xml +++ b/res/anim/slide_up.xml @@ -1,9 +1,11 @@ - - - + + + \ No newline at end of file diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png index 4f30b97353c1492ee76434aea9d0052afaa36e31..4854953055e52880e6d2418b30514dd5fdf12fa5 100644 GIT binary patch delta 6443 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 delta 3155 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 diff --git a/res/drawable-xhdpi/ic_launcher.png b/res/drawable-xhdpi/ic_launcher.png index 487c59ba198ef4253fc909a25c1ff3ff564c6b40..445b370490ddcf5a2bd6a825b5058e8432720636 100644 GIT binary patch delta 8210 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 Ye>Pi6nqAWj0ssI207*qoM6N<$f(UOe9RL6T diff --git a/src/acr/browser/barebones/Barebones.java b/src/acr/browser/barebones/Barebones.java index c992c6d..83aa488 100644 --- a/src/acr/browser/barebones/Barebones.java +++ b/src/acr/browser/barebones/Barebones.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; + import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; @@ -53,6 +54,7 @@ import android.view.View.OnClickListener; import android.view.View.OnKeyListener; import android.view.View.OnLongClickListener; import android.view.View.OnTouchListener; +import android.view.ViewGroup; import android.view.WindowManager; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; @@ -99,6 +101,8 @@ public class Barebones extends Activity { public class CustomChromeClient extends WebChromeClient { private Bitmap mDefaultVideoPoster; private View mVideoProgressView; + private FrameLayout fullScreenContainer; + private int orientation; @Override public void onExceededDatabaseQuota(String url, @@ -113,12 +117,13 @@ public class Barebones extends Activity { @Override public void onReachedMaxAppCacheSize(long requiredStorage, long quota, QuotaUpdater quotaUpdater) { - quotaUpdater.updateQuota(quota+requiredStorage); + quotaUpdater.updateQuota(quota + requiredStorage); super.onReachedMaxAppCacheSize(requiredStorage, quota, quotaUpdater); } @Override public void onCloseWindow(WebView window) { + closeWindow = window.getId(); browserHandler.sendEmptyMessage(2); super.onCloseWindow(window); } @@ -130,7 +135,7 @@ public class Barebones extends Activity { getResources(), android.R.color.black); } return mDefaultVideoPoster; - } + } @Override public View getVideoLoadingProgressView() { @@ -145,17 +150,18 @@ public class Barebones extends Activity { @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, final Message resultMsg) { - - newTab(number,"",true,false); - WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; - transport.setWebView(main[pageId]); - resultMsg.sendToTarget(); - browserHandler.postDelayed(new Runnable() { - public void run() { - main[pageId].loadUrl(getUrl.getText().toString()); - } - }, 500); - return true; + + newTab(number, "", true, false); + WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; + transport.setWebView(main[pageId]); + resultMsg.sendToTarget(); + browserHandler.postDelayed(new Runnable() { + @Override + public void run() { + main[pageId].loadUrl(getUrl.getText().toString()); + } + }, 500); + return true; } @Override @@ -166,14 +172,12 @@ public class Barebones extends Activity { callback.invoke(origin, false, false); } if (allowLocation) { - - Log.i("Barebones: ", "onGeolocationPermissionsShowPrompt()"); - final boolean remember = true; AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); builder.setTitle("Locations"); + String org = (String) origin.subSequence(0, 50); builder.setMessage( - origin + " Would like to use your Current Location ") + org + " Would like to use your Current Location ") .setCancelable(true) .setPositiveButton("Allow", new DialogInterface.OnClickListener() { @@ -198,23 +202,19 @@ public class Barebones extends Activity { @Override public void onHideCustomView() { - - if (mCustomView == null) + if (mCustomView == null && mCustomViewCallback == null) { return; - - // Hide the custom view. - mCustomView.setVisibility(View.GONE); - - // Remove the custom view from its container. - background.removeView(mCustomView); + } + mCustomView.setKeepScreenOn(false); + FrameLayout screen = (FrameLayout) getWindow().getDecorView(); + screen.removeView(fullScreenContainer); + fullScreenContainer = null; mCustomView = null; - background.setVisibility(View.VISIBLE); - uBar.setVisibility(View.VISIBLE); mCustomViewCallback.onCustomViewHidden(); - - main[pageId].setVisibility(View.VISIBLE); - - // Log.i(LOGTAG, "set it to webVew"); + setRequestedOrientation(orientation); + background.addView(main[pageId]); + uBar.setVisibility(View.VISIBLE); + uBar.bringToFront(); } @Override @@ -239,36 +239,50 @@ public class Barebones extends Activity { @Override public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) { - // Log.i(LOGTAG, "here in on ShowCustomView"); - main[pageId].setVisibility(View.GONE); - uBar.setVisibility(View.GONE); - // if a view already exists then immediately terminate the new one if (mCustomView != null) { callback.onCustomViewHidden(); return; } - - background.addView(view); + view.setKeepScreenOn(true); + orientation = getRequestedOrientation(); + FrameLayout screen = (FrameLayout) getWindow().getDecorView(); + fullScreenContainer = new FrameLayout(getBaseContext()); + fullScreenContainer.setBackgroundColor(getResources().getColor( + R.color.black)); + background.removeView(main[pageId]); + uBar.setVisibility(View.GONE); + fullScreenContainer.addView(view, + ViewGroup.LayoutParams.MATCH_PARENT); + screen.addView(fullScreenContainer, + ViewGroup.LayoutParams.MATCH_PARENT); mCustomView = view; mCustomViewCallback = callback; - background.setVisibility(View.VISIBLE); + setRequestedOrientation(requestedOrientation); + } @Override public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) { - // Log.i(LOGTAG, "here in on ShowCustomView"); - main[pageId].setVisibility(View.GONE); - uBar.setVisibility(View.GONE); - // if a view already exists then immediately terminate the new one if (mCustomView != null) { callback.onCustomViewHidden(); return; } - background.addView(view); + view.setKeepScreenOn(true); + orientation = getRequestedOrientation(); + FrameLayout screen = (FrameLayout) getWindow().getDecorView(); + fullScreenContainer = new FrameLayout(getBaseContext()); + fullScreenContainer.setBackgroundColor(getResources().getColor( + R.color.black)); + background.removeView(main[pageId]); + uBar.setVisibility(View.GONE); + fullScreenContainer.addView(view, + ViewGroup.LayoutParams.MATCH_PARENT); + screen.addView(fullScreenContainer, + ViewGroup.LayoutParams.MATCH_PARENT); mCustomView = view; mCustomViewCallback = callback; - background.setVisibility(View.VISIBLE); + setRequestedOrientation(getRequestedOrientation()); } public void openFileChooser(ValueCallback uploadMsg) { @@ -278,8 +292,7 @@ public class Barebones extends Activity { i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); Barebones.this.startActivityForResult( - Intent.createChooser(i, "Image Browser"), - 1); + Intent.createChooser(i, "File Browser"), 1); } public void openFileChooser(ValueCallback uploadMsg, @@ -289,8 +302,7 @@ public class Barebones extends Activity { i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); Barebones.this.startActivityForResult( - Intent.createChooser(i, "Image Browser"), - 1); + Intent.createChooser(i, "File Browser"), 1); } public void openFileChooser(ValueCallback uploadMsg, @@ -300,8 +312,7 @@ public class Barebones extends Activity { i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); Barebones.this.startActivityForResult( - Intent.createChooser(i, "Image Browser"), - 1); + Intent.createChooser(i, "File Browser"), 1); } } @@ -356,8 +367,7 @@ public class Barebones extends Activity { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { - if (url.contains("market://") - || url.contains("play.google.com")) { + if (url.contains("market://") || url.contains("play.google.com")) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return true; } else if (url.contains("youtube.com")) { @@ -370,15 +380,24 @@ public class Barebones extends Activity { return false; } + @Override + public void onScaleChanged(WebView view, float oldScale, float newScale) { + if (view != null) { + view.invalidate(); + } + super.onScaleChanged(view, oldScale, newScale); + } + @Override public void onPageFinished(WebView view, final String url) { - if (view.isShown()) { + if (view != null) { view.invalidate(); + } + if (view.isShown()) { progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); - if(showFullScreen&&uBar.isShown()){ + if (showFullScreen && uBar.isShown()) { uBar.startAnimation(slideUp); - } } view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); @@ -410,14 +429,14 @@ public class Barebones extends Activity { getUrl.setPadding(tenPad, 0, tenPad, 0); urlToLoad[numberPage][0] = url; - if (!uBar.isShown()&&showFullScreen) { + if (!uBar.isShown() && showFullScreen) { uBar.startAnimation(slideDown); } } @Override - public void onReceivedSslError(WebView view, final SslErrorHandler handler, - SslError error) { + public void onReceivedSslError(WebView view, + final SslErrorHandler handler, SslError error) { AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); builder.setTitle("Warning"); builder.setMessage( @@ -444,28 +463,19 @@ public class Barebones extends Activity { super.onReceivedSslError(view, handler, error); } - @Override - public void onScaleChanged(WebView view, float oldScale, float newScale) { - - view.getSettings().setLayoutAlgorithm( - LayoutAlgorithm.NORMAL); - super.onScaleChanged(view, oldScale, newScale); - } - @Override public void onFormResubmission(WebView view, final Message dontResend, final Message resend) { AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); - builder.setTitle("Resend Data"); - builder.setMessage( - "Would you like to resend data?") + builder.setTitle("Form Resubmission"); + builder.setMessage("Would you like to resend the data?") .setCancelable(true) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { - + resend.sendToTarget(); } }) @@ -474,7 +484,7 @@ public class Barebones extends Activity { @Override public void onClick(DialogInterface dialog, int id) { - + dontResend.sendToTarget(); } }); @@ -658,6 +668,14 @@ public class Barebones extends Activity { } + private void removeView(WebView view) { + if (!showFullScreen) { + view.startAnimation(fadeOut); + } + background.removeView(view); + uBar.bringToFront(); + } + private void deleteBookmark(String url) { File book = new File(getBaseContext().getFilesDir(), "bookmarks"); File bookUrl = new File(getBaseContext().getFilesDir(), "bookurl"); @@ -1000,12 +1018,13 @@ public class Barebones extends Activity { File book = new File(getBaseContext().getFilesDir(), "bookmarks"); File bookUrl = new File(getBaseContext().getFilesDir(), "bookurl"); try { - BufferedReader readUrlRead = new BufferedReader(new FileReader(bookUrl)); - String u; + BufferedReader readUrlRead = new BufferedReader(new FileReader( + bookUrl)); + String u; int n = 0; while ((u = readUrlRead.readLine()) != null && n < MAX_BOOKMARKS) { - if(u.contentEquals(urlToLoad[pageId][0])){ - + if (u.contentEquals(urlToLoad[pageId][0])) { + readUrlRead.close(); return; } @@ -1039,7 +1058,7 @@ public class Barebones extends Activity { view.setDrawingCacheBackgroundColor(getResources().getColor( android.R.color.background_light)); // view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); - + view.setWillNotCacheDrawing(true); view.setFocusable(true); view.setFocusableInTouchMode(true); @@ -1089,7 +1108,6 @@ public class Barebones extends Activity { webViewSettings.setSavePassword(true); webViewSettings.setSaveFormData(true); } - webViewSettings.setBuiltInZoomControls(true); webViewSettings.setSupportZoom(true); webViewSettings.setUseWideViewPort(true); @@ -1124,7 +1142,7 @@ public class Barebones extends Activity { void deleteTab(final int del) { main[del].stopLoading(); main[del].clearHistory(); - main[del].clearView(); + // main[del].clearView(); urlToLoad[del][0] = null; urlToLoad[del][1] = null; if (API >= 11) { @@ -1139,7 +1157,6 @@ public class Barebones extends Activity { } urlTitle[del].setPadding(leftPad, 0, rightPad, 0); Animation yolo = AnimationUtils.loadAnimation(this, R.anim.down); - yolo.setAnimationListener(new AnimationListener() { @Override @@ -1159,7 +1176,7 @@ public class Barebones extends Activity { }); urlTitle[del].startAnimation(yolo); - + uBar.bringToFront(); } @SuppressWarnings("deprecation") @@ -1169,7 +1186,8 @@ public class Barebones extends Activity { if (id == pageId) { if (main[id].isShown()) { - background.removeView(main[id]); + // background.removeView(main[id]); + removeView(main[id]); } for (; id <= (number - 1); id++) { if (urlTitle[id].isShown()) { @@ -1186,6 +1204,13 @@ public class Barebones extends Activity { setUrlText(urlToLoad[pageId][0]); getUrl.setPadding(tenPad, 0, tenPad, 0); right = true; + if (main[id].getProgress() < 100) { + refresh.setVisibility(View.INVISIBLE); + progressBar.setVisibility(View.VISIBLE); + } else { + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + } break; } @@ -1207,6 +1232,13 @@ public class Barebones extends Activity { setUrlText(urlToLoad[pageId][0]); getUrl.setPadding(tenPad, 0, tenPad, 0); left = true; + if (main[leftId].getProgress() < 100) { + refresh.setVisibility(View.INVISIBLE); + progressBar.setVisibility(View.VISIBLE); + } else { + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + } break; } @@ -1221,6 +1253,7 @@ public class Barebones extends Activity { if (!(right || left)) { finish(); } + uBar.bringToFront(); tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); } @@ -1379,7 +1412,7 @@ public class Barebones extends Activity { } catch (IllegalStateException ignored) { } - getUrl.setThreshold(2); + getUrl.setThreshold(1); getUrl.setTokenizer(new SpaceTokenizer()); getUrl.setOnItemClickListener(new OnItemClickListener() { @@ -1395,7 +1428,6 @@ public class Barebones extends Activity { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getUrl.getWindowToken(), 0); } catch (NullPointerException e) { - Log.e("Barebones Error: ", "NullPointerException on item click"); } @@ -1501,7 +1533,7 @@ public class Barebones extends Activity { && (u = readUrl.readLine()) != null && n < MAX_BOOKMARKS) { bUrl[n] = u; bTitle[n] = t; - + n++; } readBook.close(); @@ -1518,7 +1550,7 @@ public class Barebones extends Activity { getWindowManager().getDefaultDisplay().getMetrics(metrics); historyHandler = new DatabaseHandler(this); cookieManager = CookieManager.getInstance(); - + progressBar = (ProgressBar) findViewById(R.id.progressBar1); if (API >= 11) { progressBar.setIndeterminateDrawable(getResources().getDrawable( @@ -1578,10 +1610,10 @@ public class Barebones extends Activity { RelativeLayout refreshLayout = (RelativeLayout) findViewById(R.id.refreshLayout); refreshLayout.setBackgroundResource(R.drawable.button); - + // user agent user = new WebView(CONTEXT).getSettings().getUserAgentString(); - + background = (FrameLayout) findViewById(R.id.holder); mobile = user; // setting mobile user // agent @@ -1636,7 +1668,7 @@ public class Barebones extends Activity { tabScroll.setHorizontalScrollBarEnabled(false); if (API > 8) { tabScroll.setOverScrollMode(View.OVER_SCROLL_NEVER); // disallow - //overscroll + // overscroll } // image dimensions and initialization @@ -1650,7 +1682,6 @@ public class Barebones extends Activity { tenPad = (int) (10 * scale + 0.5f); number = 0; - webpageOther = getResources().getDrawable(R.drawable.webpage); incognitoPage = getResources().getDrawable(R.drawable.incognito); webpageOther.setBounds(0, 0, width / 2, height / 2); @@ -1676,6 +1707,7 @@ public class Barebones extends Activity { public void onClick(View v) { newTab(number, homepage, true, false); tabScroll.postDelayed(new Runnable() { + @Override public void run() { tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); } @@ -1703,23 +1735,23 @@ public class Barebones extends Activity { bg.removeView(uBar); background.addView(uBar); } - browserHandler = new Handler(){ + browserHandler = new Handler() { @Override public void handleMessage(Message msg) { - switch(msg.what){ - case 1:{ + switch (msg.what) { + case 1: { main[pageId].loadUrl(getUrl.getText().toString()); break; } - case 2:{ + case 2: { deleteTab(closeWindow); break; } - case 3:{ + case 3: { main[pageId].invalidate(); break; } - } + } } }; } @@ -2005,12 +2037,19 @@ public class Barebones extends Activity { @Override public void onBackPressed() { - main[pageId].stopLoading(); - if (main[pageId].canGoBack()) { - main[pageId].goBack(); - } else { - deleteTab(pageId); - uBar.bringToFront(); + + if (main[pageId] != null) { + main[pageId].stopLoading(); + + if (showFullScreen && !uBar.isShown()) { + uBar.startAnimation(slideDown); + } + if (main[pageId].canGoBack()) { + main[pageId].goBack(); + } else { + deleteTab(pageId); + uBar.bringToFront(); + } } } @@ -2018,11 +2057,9 @@ public class Barebones extends Activity { @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - main[pageId].getSettings().setLayoutAlgorithm( - LayoutAlgorithm.NORMAL); - // main[pageId].invalidate(); + main[pageId].getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL); } - + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -2104,9 +2141,7 @@ public class Barebones extends Activity { String url = intent.getDataString(); if (url != null) { - for(int n=0;n" + "
" + "

" + ""+ - "location && !uBar.isShown()) { uBar.startAnimation(slideDown); - + } else if (event.getY() webview = Class.forName("android.webkit.WebView"); + Method method = webview.getMethod("getZoomButtonsController"); + zoomControl = (ZoomButtonsController) method.invoke(this, null); + } catch (Exception e) { + e.printStackTrace(); + } + } + } } diff --git a/src/acr/browser/barebones/HistoryPage.java b/src/acr/browser/barebones/HistoryPage.java index 7dba450..23dc5de 100644 --- a/src/acr/browser/barebones/HistoryPage.java +++ b/src/acr/browser/barebones/HistoryPage.java @@ -5,8 +5,8 @@ public class HistoryPage { + "History"; diff --git a/src/acr/browser/barebones/IncognitoMode.java b/src/acr/browser/barebones/IncognitoMode.java index 6f5fced..708175a 100644 --- a/src/acr/browser/barebones/IncognitoMode.java +++ b/src/acr/browser/barebones/IncognitoMode.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; + import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; @@ -51,6 +52,7 @@ import android.view.View.OnClickListener; import android.view.View.OnKeyListener; import android.view.View.OnLongClickListener; import android.view.View.OnTouchListener; +import android.view.ViewGroup; import android.view.WindowManager; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; @@ -97,13 +99,14 @@ public class IncognitoMode extends Activity { public class CustomChromeClient extends WebChromeClient { private Bitmap mDefaultVideoPoster; private View mVideoProgressView; + private FrameLayout fullScreenContainer; + private int orientation; @Override public void onExceededDatabaseQuota(String url, String databaseIdentifier, long quota, long estimatedDatabaseSize, long totalQuota, QuotaUpdater quotaUpdater) { - // TODO Auto-generated method stub quotaUpdater.updateQuota(totalQuota + estimatedDatabaseSize); super.onExceededDatabaseQuota(url, databaseIdentifier, quota, estimatedDatabaseSize, totalQuota, quotaUpdater); @@ -112,14 +115,19 @@ public class IncognitoMode extends Activity { @Override public void onReachedMaxAppCacheSize(long requiredStorage, long quota, QuotaUpdater quotaUpdater) { - // TODO Auto-generated method stub - quotaUpdater.updateQuota(quota+requiredStorage); + quotaUpdater.updateQuota(quota + requiredStorage); super.onReachedMaxAppCacheSize(requiredStorage, quota, quotaUpdater); } + @Override + public void onCloseWindow(WebView window) { + closeWindow = window.getId(); + browserHandler.sendEmptyMessage(2); + super.onCloseWindow(window); + } + @Override public Bitmap getDefaultVideoPoster() { - // Log.i(LOGTAG, "here in on getDefaultVideoPoster"); if (mDefaultVideoPoster == null) { mDefaultVideoPoster = BitmapFactory.decodeResource( getResources(), android.R.color.black); @@ -129,8 +137,6 @@ public class IncognitoMode extends Activity { @Override public View getVideoLoadingProgressView() { - // Log.i(LOGTAG, "here in on getVideoLoadingPregressView"); - if (mVideoProgressView == null) { LayoutInflater inflater = LayoutInflater.from(getBaseContext()); mVideoProgressView = inflater.inflate( @@ -142,29 +148,18 @@ public class IncognitoMode extends Activity { @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, final Message resultMsg) { - if (isUserGesture) { - WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; - transport.setWebView(main[pageId]); - resultMsg.sendToTarget(); - Thread get = new Thread(new Runnable(){ - @Override - public void run() { - // TODO Auto-generated method stub - try { - Thread.sleep(200); - main[pageId].loadUrl(getUrl.getText().toString()); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - }); - get.start(); - return true; - } - return false; + newTab(number, "", true); + WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; + transport.setWebView(main[pageId]); + resultMsg.sendToTarget(); + browserHandler.postDelayed(new Runnable() { + @Override + public void run() { + main[pageId].loadUrl(getUrl.getText().toString()); + } + }, 500); + return true; } @Override @@ -175,21 +170,18 @@ public class IncognitoMode extends Activity { callback.invoke(origin, false, false); } if (allowLocation) { - - Log.i("IncognitoMode: ", "onGeolocationPermissionsShowPrompt()"); - final boolean remember = true; AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); builder.setTitle("Locations"); + String org = (String) origin.subSequence(0, 50); builder.setMessage( - origin + " Would like to use your Current Location ") + org + " Would like to use your Current Location ") .setCancelable(true) .setPositiveButton("Allow", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { - // origin, allow, remember callback.invoke(origin, true, remember); } }) @@ -198,7 +190,6 @@ public class IncognitoMode extends Activity { @Override public void onClick(DialogInterface dialog, int id) { - // origin, allow, remember callback.invoke(origin, false, remember); } }); @@ -209,26 +200,21 @@ public class IncognitoMode extends Activity { @Override public void onHideCustomView() { - - if (mCustomView == null) + if (mCustomView == null && mCustomViewCallback == null) { return; - - // Hide the custom view. - mCustomView.setVisibility(View.GONE); - - // Remove the custom view from its container. - background.removeView(mCustomView); + } + mCustomView.setKeepScreenOn(false); + FrameLayout screen = (FrameLayout) getWindow().getDecorView(); + screen.removeView(fullScreenContainer); + fullScreenContainer = null; mCustomView = null; - background.setVisibility(View.VISIBLE); - uBar.setVisibility(View.VISIBLE); mCustomViewCallback.onCustomViewHidden(); - - main[pageId].setVisibility(View.VISIBLE); - - // Log.i(LOGTAG, "set it to webVew"); + setRequestedOrientation(orientation); + background.addView(main[pageId]); + uBar.setVisibility(View.VISIBLE); + uBar.bringToFront(); } - @Override public void onReceivedTitle(final WebView view, final String title) { numberPage = view.getId(); @@ -240,36 +226,50 @@ public class IncognitoMode extends Activity { @Override public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) { - // Log.i(LOGTAG, "here in on ShowCustomView"); - main[pageId].setVisibility(View.GONE); - uBar.setVisibility(View.GONE); - // if a view already exists then immediately terminate the new one if (mCustomView != null) { callback.onCustomViewHidden(); return; } - - background.addView(view); + view.setKeepScreenOn(true); + orientation = getRequestedOrientation(); + FrameLayout screen = (FrameLayout) getWindow().getDecorView(); + fullScreenContainer = new FrameLayout(getBaseContext()); + fullScreenContainer.setBackgroundColor(getResources().getColor( + R.color.black)); + background.removeView(main[pageId]); + uBar.setVisibility(View.GONE); + fullScreenContainer.addView(view, + ViewGroup.LayoutParams.MATCH_PARENT); + screen.addView(fullScreenContainer, + ViewGroup.LayoutParams.MATCH_PARENT); mCustomView = view; mCustomViewCallback = callback; - background.setVisibility(View.VISIBLE); + setRequestedOrientation(requestedOrientation); + } @Override public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) { - // Log.i(LOGTAG, "here in on ShowCustomView"); - main[pageId].setVisibility(View.GONE); - uBar.setVisibility(View.GONE); - // if a view already exists then immediately terminate the new one if (mCustomView != null) { callback.onCustomViewHidden(); return; } - background.addView(view); + view.setKeepScreenOn(true); + orientation = getRequestedOrientation(); + FrameLayout screen = (FrameLayout) getWindow().getDecorView(); + fullScreenContainer = new FrameLayout(getBaseContext()); + fullScreenContainer.setBackgroundColor(getResources().getColor( + R.color.black)); + background.removeView(main[pageId]); + uBar.setVisibility(View.GONE); + fullScreenContainer.addView(view, + ViewGroup.LayoutParams.MATCH_PARENT); + screen.addView(fullScreenContainer, + ViewGroup.LayoutParams.MATCH_PARENT); mCustomView = view; mCustomViewCallback = callback; - background.setVisibility(View.VISIBLE); + setRequestedOrientation(getRequestedOrientation()); } public void openFileChooser(ValueCallback uploadMsg) { @@ -279,8 +279,7 @@ public class IncognitoMode extends Activity { i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); IncognitoMode.this.startActivityForResult( - Intent.createChooser(i, "Image Browser"), - 1); + Intent.createChooser(i, "File Browser"), 1); } public void openFileChooser(ValueCallback uploadMsg, @@ -290,8 +289,7 @@ public class IncognitoMode extends Activity { i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); IncognitoMode.this.startActivityForResult( - Intent.createChooser(i, "Image Browser"), - 1); + Intent.createChooser(i, "File Browser"), 1); } public void openFileChooser(ValueCallback uploadMsg, @@ -301,8 +299,7 @@ public class IncognitoMode extends Activity { i.addCategory(Intent.CATEGORY_OPENABLE); i.setType("image/*"); IncognitoMode.this.startActivityForResult( - Intent.createChooser(i, "Image Browser"), - 1); + Intent.createChooser(i, "File Browser"), 1); } } @@ -352,16 +349,12 @@ public class IncognitoMode extends Activity { } - private class CustomWebViewClient extends WebViewClient { + private class IncognitoWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { - if (url.contains("plus.google.com")) { - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); - return true; - } else if (url.contains("market://") - || url.contains("play.google.com")) { + if (url.contains("market://") || url.contains("play.google.com")) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return true; } else if (url.contains("youtube.com")) { @@ -371,19 +364,27 @@ public class IncognitoMode extends Activity { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return true; } - return false; } + @Override + public void onScaleChanged(WebView view, float oldScale, float newScale) { + if (view != null) { + view.invalidate(); + } + super.onScaleChanged(view, oldScale, newScale); + } + @Override public void onPageFinished(WebView view, final String url) { + if (view != null) { + view.invalidate(); + } if (view.isShown()) { - view.postInvalidate(); progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); - if(showFullScreen&&uBar.isShown()){ + if (showFullScreen && uBar.isShown()) { uBar.startAnimation(slideUp); - } } view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); @@ -402,34 +403,79 @@ public class IncognitoMode extends Activity { setUrlText(url); pageIsLoading = true; } - urlTitle[numberPage].setCompoundDrawables(incognitoPage, null, - exitTab, null); - + + urlTitle[numberPage].setCompoundDrawables(incognitoPage, null, + exitTab, null); + getUrl.setPadding(tenPad, 0, tenPad, 0); urlToLoad[numberPage][0] = url; - if (!uBar.isShown()&&showFullScreen) { + if (!uBar.isShown() && showFullScreen) { uBar.startAnimation(slideDown); } } @Override - public void onReceivedSslError(WebView view, SslErrorHandler handler, - SslError error) { - handler.proceed(); + public void onReceivedSslError(WebView view, + final SslErrorHandler handler, SslError error) { + AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); + builder.setTitle("Warning"); + builder.setMessage( + "The certificate of the site is not trusted. Proceed anyway?") + .setCancelable(true) + .setPositiveButton("Yes", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + handler.proceed(); + } + }) + .setNegativeButton("No", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + handler.cancel(); + } + }); + AlertDialog alert = builder.create(); + alert.show(); super.onReceivedSslError(view, handler, error); } @Override - public void onScaleChanged(WebView view, float oldScale, float newScale) { - - view.getSettings().setLayoutAlgorithm( - LayoutAlgorithm.NORMAL); - super.onScaleChanged(view, oldScale, newScale); + public void onFormResubmission(WebView view, final Message dontResend, + final Message resend) { + AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); + builder.setTitle("Form Resubmission"); + builder.setMessage("Would you like to resend the data?") + .setCancelable(true) + .setPositiveButton("Yes", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + + resend.sendToTarget(); + } + }) + .setNegativeButton("No", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + + dontResend.sendToTarget(); + } + }); + AlertDialog alert = builder.create(); + alert.show(); + super.onFormResubmission(view, dontResend, resend); } } - private void generateHistory(final CustomWebView view) { + private void generateHistory(final IncognitoWebView view) { Thread history = new Thread(new Runnable() { @@ -603,6 +649,14 @@ public class IncognitoMode extends Activity { } + private void removeView(WebView view) { + if (!showFullScreen) { + view.startAnimation(fadeOut); + } + background.removeView(view); + uBar.bringToFront(); + } + private void deleteBookmark(String url) { File book = new File(getBaseContext().getFilesDir(), "bookmarks"); File bookUrl = new File(getBaseContext().getFilesDir(), "bookurl"); @@ -662,7 +716,7 @@ public class IncognitoMode extends Activity { switch (which) { case DialogInterface.BUTTON_POSITIVE: { int num = pageId; - newTab(number, result.getExtra(), false, true); + newTab(number, result.getExtra(), false); // urlTitle[num].performClick(); pageId = num; break; @@ -700,7 +754,7 @@ public class IncognitoMode extends Activity { switch (which) { case DialogInterface.BUTTON_POSITIVE: { int num = pageId; - newTab(number, result.getExtra(), false, true); + newTab(number, result.getExtra(), false); // urlTitle[num].performClick(); pageId = num; break; @@ -783,7 +837,7 @@ public class IncognitoMode extends Activity { switch (which) { case DialogInterface.BUTTON_POSITIVE: { int num = pageId; - newTab(number, result.getExtra(), false, true); + newTab(number, result.getExtra(), false); // urlTitle[num].performClick(); pageId = num; break; @@ -838,7 +892,7 @@ public class IncognitoMode extends Activity { private static SimpleAdapter adapter; private static MultiAutoCompleteTextView getUrl; private static final TextView[] urlTitle = new TextView[MAX_TABS]; - private static final CustomWebView[] main = new CustomWebView[MAX_TABS]; + private static final IncognitoWebView[] main = new IncognitoWebView[MAX_TABS]; private static Rect bounds; private static ValueCallback mUploadMessage; private static ImageView refresh; @@ -864,6 +918,7 @@ public class IncognitoMode extends Activity { private static int tenPad; private static int urlColumn; private static int titleColumn; + private static int closeWindow; private static View mCustomView = null; private static CustomViewCallback mCustomViewCallback; private static boolean isPhone = false; @@ -900,7 +955,7 @@ public class IncognitoMode extends Activity { private static List> list; private static Map map; - private static Handler handler; + private static Handler handler, browserHandler; private static DatabaseHandler historyHandler; @@ -923,14 +978,51 @@ public class IncognitoMode extends Activity { } } + void addBookmark() { + File book = new File(getBaseContext().getFilesDir(), "bookmarks"); + File bookUrl = new File(getBaseContext().getFilesDir(), "bookurl"); + try { + BufferedReader readUrlRead = new BufferedReader(new FileReader( + bookUrl)); + String u; + int n = 0; + while ((u = readUrlRead.readLine()) != null && n < MAX_BOOKMARKS) { + if (u.contentEquals(urlToLoad[pageId][0])) { + + readUrlRead.close(); + return; + } + n++; + } + readUrlRead.close(); + } catch (FileNotFoundException ignored) { + } catch (IOException ignored) { + } + try { + BufferedWriter bookWriter = new BufferedWriter(new FileWriter(book, + true)); + BufferedWriter urlWriter = new BufferedWriter(new FileWriter( + bookUrl, true)); + bookWriter.write(urlToLoad[pageId][1]); + urlWriter.write(urlToLoad[pageId][0]); + bookWriter.newLine(); + urlWriter.newLine(); + bookWriter.close(); + urlWriter.close(); + } catch (FileNotFoundException ignored) { + } catch (IOException ignored) { + } catch (NullPointerException ignored) { + } + } + @SuppressLint("SetJavaScriptEnabled") - CustomWebView browserSettings(CustomWebView view) { + IncognitoWebView browserSettings(IncognitoWebView view) { view.setAnimationCacheEnabled(false); view.setDrawingCacheEnabled(false); view.setDrawingCacheBackgroundColor(getResources().getColor( android.R.color.background_light)); // view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); - + view.setWillNotCacheDrawing(true); view.setFocusable(true); view.setFocusableInTouchMode(true); @@ -946,18 +1038,18 @@ public class IncognitoMode extends Activity { webViewSettings.setBlockNetworkImage(false); webViewSettings.setAllowFileAccess(true); webViewSettings.setLightTouchEnabled(true); - webViewSettings.setSupportMultipleWindows(false); + webViewSettings.setSupportMultipleWindows(true); webViewSettings.setDomStorageEnabled(true); webViewSettings.setAppCacheEnabled(true); webViewSettings.setAppCachePath(getApplicationContext().getFilesDir() - .getAbsolutePath() + "/incognito_cache"); + .getAbsolutePath() + "/cache"); webViewSettings.setRenderPriority(RenderPriority.HIGH); webViewSettings.setGeolocationEnabled(true); webViewSettings.setGeolocationDatabasePath(getApplicationContext() - .getFilesDir().getAbsolutePath()+"/incognito_geolocation"); + .getFilesDir().getAbsolutePath()); webViewSettings.setDatabaseEnabled(true); webViewSettings.setDatabasePath(getApplicationContext().getFilesDir() - .getAbsolutePath() + "/incognito_databases"); + .getAbsolutePath() + "/databases"); enableFlash = settings.getInt("enableflash", 0); switch (enableFlash) { case 0: @@ -977,7 +1069,6 @@ public class IncognitoMode extends Activity { webViewSettings.setUserAgentString(userAgent); webViewSettings.setSavePassword(false); webViewSettings.setSaveFormData(false); - webViewSettings.setBuiltInZoomControls(true); webViewSettings.setSupportZoom(true); webViewSettings.setUseWideViewPort(true); @@ -1012,7 +1103,7 @@ public class IncognitoMode extends Activity { void deleteTab(final int del) { main[del].stopLoading(); main[del].clearHistory(); - main[del].clearView(); + // main[del].clearView(); urlToLoad[del][0] = null; urlToLoad[del][1] = null; if (API >= 11) { @@ -1027,7 +1118,6 @@ public class IncognitoMode extends Activity { } urlTitle[del].setPadding(leftPad, 0, rightPad, 0); Animation yolo = AnimationUtils.loadAnimation(this, R.anim.down); - yolo.setAnimationListener(new AnimationListener() { @Override @@ -1047,7 +1137,7 @@ public class IncognitoMode extends Activity { }); urlTitle[del].startAnimation(yolo); - + uBar.bringToFront(); } @SuppressWarnings("deprecation") @@ -1057,7 +1147,8 @@ public class IncognitoMode extends Activity { if (id == pageId) { if (main[id].isShown()) { - background.removeView(main[id]); + // background.removeView(main[id]); + removeView(main[id]); } for (; id <= (number - 1); id++) { if (urlTitle[id].isShown()) { @@ -1074,6 +1165,13 @@ public class IncognitoMode extends Activity { setUrlText(urlToLoad[pageId][0]); getUrl.setPadding(tenPad, 0, tenPad, 0); right = true; + if (main[id].getProgress() < 100) { + refresh.setVisibility(View.INVISIBLE); + progressBar.setVisibility(View.VISIBLE); + } else { + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + } break; } @@ -1095,6 +1193,13 @@ public class IncognitoMode extends Activity { setUrlText(urlToLoad[pageId][0]); getUrl.setPadding(tenPad, 0, tenPad, 0); left = true; + if (main[leftId].getProgress() < 100) { + refresh.setVisibility(View.INVISIBLE); + progressBar.setVisibility(View.VISIBLE); + } else { + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + } break; } @@ -1109,6 +1214,7 @@ public class IncognitoMode extends Activity { if (!(right || left)) { finish(); } + uBar.bringToFront(); tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); } @@ -1248,7 +1354,7 @@ public class IncognitoMode extends Activity { } catch (IllegalStateException ignored) { } - getUrl.setThreshold(2); + getUrl.setThreshold(1); getUrl.setTokenizer(new SpaceTokenizer()); getUrl.setOnItemClickListener(new OnItemClickListener() { @@ -1264,7 +1370,6 @@ public class IncognitoMode extends Activity { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getUrl.getWindowToken(), 0); } catch (NullPointerException e) { - Log.e("IncognitoMode Error: ", "NullPointerException on item click"); } @@ -1313,8 +1418,6 @@ public class IncognitoMode extends Activity { public void finish() { background.clearDisappearingChildren(); tabScroll.clearDisappearingChildren(); - main[0].clearCache(true); - cookieManager.setAcceptCookie(true); super.finish(); } @@ -1337,7 +1440,7 @@ public class IncognitoMode extends Activity { }); } - void goBookmarks(CustomWebView view) { + void goBookmarks(IncognitoWebView view) { File book = new File(getBaseContext().getFilesDir(), "bookmarks"); File bookUrl = new File(getBaseContext().getFilesDir(), "bookurl"); try { @@ -1349,7 +1452,7 @@ public class IncognitoMode extends Activity { && (u = readUrl.readLine()) != null && n < MAX_BOOKMARKS) { bUrl[n] = u; bTitle[n] = t; - + n++; } readBook.close(); @@ -1365,10 +1468,7 @@ public class IncognitoMode extends Activity { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); historyHandler = new DatabaseHandler(this); - CookieSyncManager.createInstance(CONTEXT); - cookieManager = CookieManager.getInstance(); - cookieManager.setAcceptCookie(false); - + progressBar = (ProgressBar) findViewById(R.id.progressBar1); if (API >= 11) { progressBar.setIndeterminateDrawable(getResources().getDrawable( @@ -1428,10 +1528,10 @@ public class IncognitoMode extends Activity { RelativeLayout refreshLayout = (RelativeLayout) findViewById(R.id.refreshLayout); refreshLayout.setBackgroundResource(R.drawable.button); - + // user agent user = new WebView(CONTEXT).getSettings().getUserAgentString(); - + background = (FrameLayout) findViewById(R.id.holder); mobile = user; // setting mobile user // agent @@ -1450,7 +1550,6 @@ public class IncognitoMode extends Activity { allowLocation = settings.getBoolean("location", false); // initializing // location // variable - enableFlash = settings.getInt("enableflash", 0); // enable flash // boolean agentPicker = settings.getInt("agentchoose", 1); // which user agent to @@ -1458,7 +1557,6 @@ public class IncognitoMode extends Activity { // 2=desktop, // 3=custom - // initializing variables declared height = getResources().getDrawable(R.drawable.loading) @@ -1481,7 +1579,7 @@ public class IncognitoMode extends Activity { tabScroll.setHorizontalScrollBarEnabled(false); if (API > 8) { tabScroll.setOverScrollMode(View.OVER_SCROLL_NEVER); // disallow - //overscroll + // overscroll } // image dimensions and initialization @@ -1495,7 +1593,6 @@ public class IncognitoMode extends Activity { tenPad = (int) (10 * scale + 0.5f); number = 0; - webpageOther = getResources().getDrawable(R.drawable.webpage); incognitoPage = getResources().getDrawable(R.drawable.incognito); webpageOther.setBounds(0, 0, width / 2, height / 2); @@ -1519,8 +1616,9 @@ public class IncognitoMode extends Activity { newTab.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - newTab(number, homepage, true, true); + newTab(number, homepage, true); tabScroll.postDelayed(new Runnable() { + @Override public void run() { tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); } @@ -1548,32 +1646,50 @@ public class IncognitoMode extends Activity { bg.removeView(uBar); background.addView(uBar); } - + browserHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case 1: { + main[pageId].loadUrl(getUrl.getText().toString()); + break; + } + case 2: { + deleteTab(closeWindow); + break; + } + case 3: { + main[pageId].invalidate(); + break; + } + } + } + }; } void initializeTabs() { Intent url = getIntent(); String URL = url.getDataString(); - if (URL != null) { - // opens a new tab with the url if its there - newTab(number, URL, true, true); - main[number - 1].resumeTimers(); + if (URL != null) { + // opens a new tab with the url if its there + newTab(number, URL, true); + main[number - 1].resumeTimers(); - } else { - // otherwise it opens the homepage - newTab(number, homepage, true, true); - main[number - 1].resumeTimers(); + } else { + // otherwise it opens the homepage + newTab(number, homepage, true); + main[number - 1].resumeTimers(); + + } - } - } - private CustomWebView makeTab(final int pageToView, final String Url, + private IncognitoWebView makeTab(final int pageToView, final String Url, final boolean display) { - CustomWebView view = new CustomWebView(CONTEXT); + IncognitoWebView view = new IncognitoWebView(CONTEXT); view.setId(pageToView); allowLocation = settings.getBoolean("location", false); - view.setWebViewClient(new CustomWebViewClient()); + view.setWebViewClient(new IncognitoWebViewClient()); view.setWebChromeClient(new CustomChromeClient()); if (API > 8) { view.setDownloadListener(new CustomDownloadListener()); @@ -1623,8 +1739,7 @@ public class IncognitoMode extends Activity { // new tab method, takes the id of the tab to be created and the url to load @SuppressWarnings("deprecation") - int newTab(int theId, final String theUrl, final boolean display, - final boolean incognito_mode) { + int newTab(int theId, final String theUrl, final boolean display) { Log.i("IncognitoMode", "making tab"); int finalID = 0; @@ -1655,6 +1770,7 @@ public class IncognitoMode extends Activity { }); urlTitle[n].startAnimation(holo); urlTitle[num].setText("New Tab"); + if (display) { if (API < 16) { urlTitle[num].setBackgroundDrawable(active); @@ -1728,10 +1844,9 @@ public class IncognitoMode extends Activity { title.setPadding(leftPad, 0, rightPad, 0); title.setId(number); title.setGravity(Gravity.CENTER_VERTICAL); - - title.setCompoundDrawables(incognitoPage, null, exitTab, - null); - + + title.setCompoundDrawables(incognitoPage, null, exitTab, null); + Drawable[] drawables = title.getCompoundDrawables(); bounds = drawables[2].getBounds(); title.setOnTouchListener(new TabTouchListener()); @@ -1756,10 +1871,9 @@ public class IncognitoMode extends Activity { }); title.startAnimation(holo); urlTitle[number] = title; - + urlTitle[number].setText("Incognito"); - if (theUrl != null) { main[number] = makeTab(number, theUrl, display); } else { @@ -1793,11 +1907,19 @@ public class IncognitoMode extends Activity { @Override public void onBackPressed() { - if (main[pageId].canGoBack()) { - main[pageId].goBack(); - } else { - deleteTab(pageId); - uBar.bringToFront(); + + if (main[pageId] != null) { + main[pageId].stopLoading(); + + if (showFullScreen && !uBar.isShown()) { + uBar.startAnimation(slideDown); + } + if (main[pageId].canGoBack()) { + main[pageId].goBack(); + } else { + deleteTab(pageId); + uBar.bringToFront(); + } } } @@ -1805,19 +1927,18 @@ public class IncognitoMode extends Activity { @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - main[pageId].getSettings().setLayoutAlgorithm( - LayoutAlgorithm.NORMAL); - // main[pageId].invalidate(); + main[pageId].getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL); } - + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // displays main xml layout settings = getSharedPreferences(preferences, 0); edit = settings.edit(); - - + CookieSyncManager.createInstance(CONTEXT); + cookieManager = CookieManager.getInstance(); + cookieManager.setAcceptCookie(false); inactive = getResources().getDrawable(R.drawable.bg_inactive); active = getResources().getDrawable(R.drawable.bg_press); init(); // sets up random stuff @@ -1886,7 +2007,7 @@ public class IncognitoMode extends Activity { String url = intent.getDataString(); if (url != null) { - newTab(number, url, true, true); + newTab(number, url, true); } super.onNewIntent(intent); } @@ -1898,22 +2019,16 @@ public class IncognitoMode extends Activity { case R.id.history: generateHistory(main[pageId]); return true; - case R.id.bookmark: - return true; - case R.id.settings: - return true; case R.id.allBookmarks: if (!urlToLoad[pageId][1].equals("Bookmarks")) { goBookmarks(main[pageId]); } return true; - case R.id.share: - return true; case R.id.incognito: - newTab(number, homepage, true, true); + newTab(number, homepage, true); return true; default: - return super.onOptionsItemSelected(item); + return false; } } @@ -1938,7 +2053,7 @@ public class IncognitoMode extends Activity { } - void openBookmarks(CustomWebView view) { + void openBookmarks(IncognitoWebView view) { String bookmarkHtml = BookmarkPage.Heading; for (int n = 0; n < MAX_BOOKMARKS; n++) { if (bUrl[n] != null) { @@ -1988,19 +2103,13 @@ public class IncognitoMode extends Activity { case R.id.history: generateHistory(main[pageId]); return true; - case R.id.bookmark: - return true; - case R.id.settings: - return true; case R.id.allBookmarks: if (!urlToLoad[pageId][1].equals("Bookmarks")) { goBookmarks(main[pageId]); } return true; - case R.id.share: - return true; case R.id.incognito: - newTab(number, homepage, true, true); + newTab(number, homepage, true); return true; default: return false; @@ -2027,6 +2136,26 @@ public class IncognitoMode extends Activity { }); } + void share() { + Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); + + // set the type + shareIntent.setType("text/plain"); + + // add a subject + shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, + urlToLoad[pageId][1]); + + // build the body of the message to be shared + String shareMessage = urlToLoad[pageId][0]; + + // add the message + shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareMessage); + + // start the chooser for sharing + startActivity(Intent.createChooser(shareIntent, "Share this page")); + } + void testForSearch() { String fixedQuery = query.trim(); main[pageId].stopLoading(); @@ -2064,4 +2193,4 @@ public class IncognitoMode extends Activity { } } -} +} \ No newline at end of file diff --git a/src/acr/browser/barebones/IncognitoWebView.java b/src/acr/browser/barebones/IncognitoWebView.java new file mode 100644 index 0000000..47e4bbe --- /dev/null +++ b/src/acr/browser/barebones/IncognitoWebView.java @@ -0,0 +1,68 @@ +package acr.browser.barebones; + +import java.lang.reflect.Method; + +import android.content.Context; +import android.view.MotionEvent; +import android.view.View; +import android.view.animation.Animation; +import android.webkit.WebView; +import android.widget.ZoomButtonsController; + +public final class IncognitoWebView extends WebView { + private float location; + private boolean first = false; + private final int API = FinalVars.API; + private final boolean showFullScreen = IncognitoMode.showFullScreen; + private final View uBar = IncognitoMode.uBar; + private final Animation slideUp = IncognitoMode.slideUp; + private final Animation slideDown = IncognitoMode.slideDown; + private ZoomButtonsController zoomControl; + public IncognitoWebView(Context context) { + super(context); + getControls(); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if(API<11&&zoomControl!=null){ + zoomControl.getZoomControls().setVisibility(View.INVISIBLE); + } + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: { + first = true; + if (API <= 10 && !this.hasFocus()) { + this.requestFocus(); + } + location = event.getY(); + break; + } + case MotionEvent.ACTION_UP:{ + if (showFullScreen&&first) { + if (uBar.isShown()&&this.getScrollY()<5) { + uBar.startAnimation(slideUp); + } else if (event.getY()>location && !uBar.isShown()) { + uBar.startAnimation(slideDown); + } else if (event.getY() webview = Class.forName("android.webkit.WebView"); + Method method = webview.getMethod("getZoomButtonsController"); + zoomControl = (ZoomButtonsController) method.invoke(this, null); + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/acr/browser/barebones/SpaceTokenizer.java b/src/acr/browser/barebones/SpaceTokenizer.java index ba03e88..f738956 100644 --- a/src/acr/browser/barebones/SpaceTokenizer.java +++ b/src/acr/browser/barebones/SpaceTokenizer.java @@ -12,14 +12,14 @@ public class SpaceTokenizer implements Tokenizer { int i = cursor; int len = text.length(); - while (i < len) { + /*while (i < len) { if (text.charAt(i) == ' ') { return i; } else { i++; } } - +*/ return len; } @@ -40,8 +40,8 @@ public class SpaceTokenizer implements Tokenizer { @Override public CharSequence terminateToken(CharSequence text) { int i = text.length(); - - while (i > 0 && text.charAt(i - 1) == ' ') { + return text; + /*while (i > 0 && text.charAt(i - 1) == ' ') { i--; } @@ -56,6 +56,6 @@ public class SpaceTokenizer implements Tokenizer { } else { return text + " "; } - } + }*/ } }