From 9df6117475a669ec70752958a395ffc13ec0dd64 Mon Sep 17 00:00:00 2001 From: Anthony Restaino Date: Tue, 13 Aug 2013 20:32:58 -0400 Subject: [PATCH] 2.5.0.11 - Swipe gestures to go back and forth - Reverted to old icon :( - ability to hide the status bar - progress bar indicating page load progress - clear cookies button - added proguard file - bugfixes/random stuff I changed --- AndroidManifest.xml | 10 +- ic_launcher.png | Bin 144663 -> 126318 bytes ic_launcher_small.png | Bin 14264 -> 21093 bytes proguard-project.txt | 69 + res/drawable-hdpi/ic_launcher.png | Bin 6482 -> 7037 bytes res/drawable-xhdpi/ic_launcher.png | Bin 8236 -> 10584 bytes res/drawable-xhdpi/progress_bar.9.png | Bin 0 -> 199 bytes res/drawable-xhdpi/progress_bar_bg.9.png | Bin 0 -> 179 bytes res/drawable-xxhdpi/ic_launcher.png | Bin 13532 -> 19940 bytes res/drawable/progress.xml | 18 + res/layout/activity_main.xml | 13 + res/layout/advanced_settings.xml | 43 +- res/values-tr/strings.xml | 57 + res/values-zh-rCN/strings.xml | 2 +- res/values-zh-rTW/strings.xml | 71 +- res/values/strings.xml | 2 + .../activities/AdvancedSettingsActivity.java | 109 +- .../barebones/activities/BrowserActivity.java | 2150 +++++++++++++++++ .../activities/IncognitoModeActivity.java | 1428 +++++------ .../activities/SettingsActivity.java | 118 +- .../customwebview/CustomWebView.java | 148 +- .../customwebview/IncognitoWebView.java | 126 +- .../IncognitoChromeClient.java | 216 ++ .../IncognitoDownloadListener.java | 60 + .../IncognitoLongClickListener.java | 14 + .../IncognitoWebViewClient.java | 202 ++ .../utilities/BookmarkPageVariables.java | 2 +- .../barebones/utilities/FinalVariables.java | 10 +- .../browser/barebones/utilities/Utils.java | 76 +- .../webviewclasses/CustomChromeClient.java | 216 ++ .../CustomDownloadListener.java | 62 + .../webviewclasses/CustomWebViewClient.java | 202 ++ .../WebPageLongClickListener.java | 14 + 33 files changed, 4445 insertions(+), 993 deletions(-) create mode 100644 proguard-project.txt create mode 100644 res/drawable-xhdpi/progress_bar.9.png create mode 100644 res/drawable-xhdpi/progress_bar_bg.9.png create mode 100644 res/drawable/progress.xml create mode 100644 res/values-tr/strings.xml create mode 100644 src/acr/browser/barebones/activities/BrowserActivity.java create mode 100644 src/acr/browser/barebones/incognitoclasses/IncognitoChromeClient.java create mode 100644 src/acr/browser/barebones/incognitoclasses/IncognitoDownloadListener.java create mode 100644 src/acr/browser/barebones/incognitoclasses/IncognitoLongClickListener.java create mode 100644 src/acr/browser/barebones/incognitoclasses/IncognitoWebViewClient.java create mode 100644 src/acr/browser/barebones/webviewclasses/CustomChromeClient.java create mode 100644 src/acr/browser/barebones/webviewclasses/CustomDownloadListener.java create mode 100644 src/acr/browser/barebones/webviewclasses/CustomWebViewClient.java create mode 100644 src/acr/browser/barebones/webviewclasses/WebPageLongClickListener.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 68b9224..43ad229 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="53" + android:versionName="2.5.0.11" > - + @@ -114,7 +114,7 @@ android:configChanges="orientation|screenSize|keyboardHidden|keyboard" android:label="@string/title_activity_advanced_settings" > - + diff --git a/ic_launcher.png b/ic_launcher.png index 52fa9d034780c3afb33c9423238def838ad14f31..5ef2ab5c700267687c4317ccdad562124009f1d9 100644 GIT binary patch literal 126318 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 DWF@i{ literal 144663 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

cL&UH#^)u3dAidh3zmG39W7 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 Bq(=Y% diff --git a/ic_launcher_small.png b/ic_launcher_small.png index 8404e385782e4c88583b74612527385ab837b58a..89b702fc6238313a7316d13e1ba744b9770e1248 100644 GIT binary patch literal 21093 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 SQh@~k0000D8!hfy9EukS?(XjH1TV!QxD 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 z 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 diff --git a/proguard-project.txt b/proguard-project.txt new file mode 100644 index 0000000..39a2e09 --- /dev/null +++ b/proguard-project.txt @@ -0,0 +1,69 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +-keepclassmembers class fqcn.of.javascript.interface.for.webview { + public *; +} + +-keep class acr.browser.barebones.webviewclasses.CustomChromeClient{ + public *; + private *; + protected *; +} + +-keep class acr.browser.barebones.webviewclasses.CustomWebViewClient{ + public *; + private *; + protected *; +} + +-keep class acr.browser.barebones.customwebview.CustomWebView{ + public *; + private *; + protected *; +} + +-keep class acr.browser.barebones.activities.BrowserActivity{ + public void browserSettings(...); + public void makeTab(...); + public void newTab(...); + public void onLongClick(...); +} + +-keep class acr.browser.barebones.incognitoclasses.IncognitoChromeClient{ + public *; + private *; + protected *; +} + +-keep class acr.browser.barebones.incognitoclasses.IncognitoWebViewClient{ + public *; + private *; + protected *; +} + +-keep class acr.browser.barebones.customwebview.IncognitoWebView{ + public *; + private *; + protected *; +} + +-keep class acr.browser.barebones.activities.IncognitoModeActivity{ + public void browserSettings(...); + public void makeTab(...); + public void newTab(...); +} diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png index 4854953055e52880e6d2418b30514dd5fdf12fa5..b7a46c4e0496e3f083b38e144b21583da48bdf0d 100644 GIT binary patch delta 7002 zcmV-g8>QsZGW|A?JPOqS01edvJ=R$9kwz$g8u>{?K~#8N?VJaARaLgf&rR=u^r4EN zD2(Hq=J=-h=9}-Er_SgUXP8l7P^ltlK#KGpN1(YHXI#L2j2ni%1ArLyDNfQuh zN)sf2>;3=hoPBfd%}oe1qoeP={eA1ZH}{^i_gcUGUu*4?pw|D7Z~B;!=dmVi4uM5~ z!YVt)_xKFo{hu0R@|9jNkDZ zUON`|B;|ik=lEYWMsA9*Ms0e=8l5-C8k2VhK?;HuYusk>OxP@;6AL7I(iW-w))uMa z7~k`=P{86ffQ0LD5ARLH9Gr`Da_(<`?HHbWuQeifjFqtI41y5^B~b{ldeUa8k&q`f zhU7~1{@GHw_XdgTktJc>)=Q{ke9zDL9k1cFyodKj5$>2g(K$zAZmz+#zBOY=&b`*q zoSD|J+#7ISVgW{j8<-=}J+s8~T83D(`1QU9C|>jb&bf#8at_YLIb%ly7S;fNpc}d- z*Z#(i0UM*OLD?g$!P(b?hUQ3BLK&1JkqD?1fbPaJ#d^IQ^Iiw@hX+`ZJu-C-uEjM0 z=(_qaAUoRe>KiipZG0SnKJ*OCma4-yNwopl5^RDp0h*u@l+`m+JiVYMT5sEe)HXQg zd~UA6^?D!84bA};jMr*NMXv3C8I&#b#p(~A{_UgBhG5uGtKWuOv4e9|`oUC%8;TnU zA-n+qePDezN^n1yAwaLWKgV@?J?{fN&cpe9U^(g{sOkf9guYa87OWb01yI&g#cy<(j%0HfJ&M3onFW5smlI;CBQrY=7pu8 zXf`OOb#=@U)OUkeZ)Byw&&rP1U(@K3SqF~oh=j9DCy$?66byG94k{D}hz%oGLeZ7N zhHjFuVYY=MHT=zdr`HX&?;$t?jIaou%JKzeL-N3wc9B>g{_Ienzn0N$eLXmGAQsNW z!Z{z+xWRC@35HM<2uxvrN!z-MdP)M8YqfIm9U^Ur5x3GQ^_dCfMHNn1%fm|M~=$#S`^PmIM+mt z$(N`^oO6;2Y)iB)a?ECl91SBl+)Jn z$V`b%+$6E%3M6*?R*9jF+bYpxak6%x5tdh3E>PSMZVYP_RjiQcp93iz!00bnFB)AkJXV)~b+hAo1%RU|Ra!MhF_B1@$dM@GL(-(?pykpbd6O(GJS;`0Kb4c8 zT~Rx7?vkVyeI$KWZk30VQY3D8s#F@AE0rd0l}c|GO5DUkiJegBzyc^$71f9}n0_Yp zs3t;!ihWYf1u2f7Ar_74Up8J&Zy$v&5nPDtI2N{MI(93|MjFczVv3m=WtG zdRT@;4Ou4t}YF0Szsy4o+;B#9ZjB{6-cjDdAqvRNKYOhHXtCgB6tN!Vcc zLr6Fem4XBn5mF2`I;?BPRjXrq6DP`laCA)fSRK-T)>k4NPVS@@rOSdCf|^qb4r)X+ zifzoujnZ`FDoq~-PAJ!}Uzabw_(IDb)W+}pq3$|y zUY?kgCgE?alCVJ=OVSOS$dkD{)%ciFiP_LGZN0|$504IM&&NTI9zOeUV(bEUgS*1r z35Aq@DQks;w2D$VD6r^CRR^z-t;f%500eXG+BGjA1Brl)88H5znG`gTInU>xe=b+A zUX?3XuBh=nzq@(sw!FRw#k;o)5;idy9W02o$Ezay!8fiOenyN=w0Ai=q(z3mvhG*} zCnX?9J=_iM3U?6V`QvO)ORsDq;-iU z986@=iwkfeF35$$k?#>ha3&g(CDB7OQ9QFGE@8dY9JoZzUcRP5G8j4@2$DZ2x4Gee z7(fP&8xY|bK%af~nO?ge9WuJd5($Tj!l0s19zPrvd0sC8gmy2nwu-tqQCDzuNDGVX znsGeXOawq4z@mD%P-wpm64o~ZEq{g7?z>c;#E!);-mC?)`;vSav@Azc!US?BNP)~; zLo;v;pg`&&92(zq?PsQ-!wrCsJd;s>MeMe0EUZP`a0gKEs~N&r8M7081xAOo7SWsp zHyc2lm*ew_yDQN_tm&jM= zN<{Az3GcN=!g{4jNG~X+Ct~3_$OR}E#+VuVokxeX`jM|@+_YXer(H9AG-DhkPe4Jr^U_jhhEf#4WGT;BlV>*v?MkbVoYWJ20bNm{#8 zUV3+f)bF_%FqTVDe472MU&hBcJEt?vZZdXZ&?kQ8o}X#=`SlwzXz3OS>$pIFJY7>YK8^Eb zbUeH=b_YY*BeF}zTHauFHh|XaZwW)<*T^#yQnkJi%-OSNy@1>*x)UTfD1TUPb6?}W zw<2)N=F!J9XU@ncpM0XP{Ena|r|p)Y_6q?gP1U3Ec1)AVF6-7h7|Iy!QX)a}iq(mL zU;q@PfYwXME6e2loc-#5Fc;(E6@^q0P=U;St+_uC90SPs;f7-Xoj!e9KK}S){hY^$ z$A_&HPp4IY14xV)fWkT>b}(>glpdb;Ykv}|G+}u4Kz0Na(k%nBOqQc(E~+zTM+_hX z$?W2tAo+tT&)oOi4IBf=z%hVMojRp+&B`hgPus9EENh^7p{!bajdJfWS^(n>B)MIl=yAulG&kNYo`q-A+3 zd9z?eA-O@h19e+@K#Z9=Dgws<3Iylm$&>ooM`u5ipy#HGr`>9?+M}a6aVvu|00jqk zOxvdywukIqTrPEAo-b>*9Yy88p^kG=BUJ;aqLAF6Xn`Pq_?!EBnm-r=hwGLH#{eQ6 z8s8r|`HB27VY!61nuAzBuwzE-$^a~EB<@l3p-|-D8KwE+3aQm$uIxK;UcqnyGcoN> zknRME<{x}n=Dx=t%s&F>#EBDXypEl6%fZu9r{jE$nXxMauyCk&hsXM1>ljamw5wJ- zBnYA+0P(29!UfK%k7d1250~?<)_CKOEz$8_q``eWZ5$_;G#Z8XNbV zkf4?**ofWJ5e&dWnYf0>daQjFPlwcE>!nrlqh5>U$dRK`R8%B;_Uw_pd-tmGXWG7f z`@FV)|9-Ut2M+ky!Gi}&*`Y&+{wedH&wowhi`zecn(^Dj!I*aM-mS);4<9)q55?o) z*mgCFc3Lr6C==K4SU-ND8Vd6*Ueq*xi99thS)Lj&PkuXSp8Rg`e0h3EvOF_1S$;o! zf&3w1q5NsoVtF=kiTru&Qu)icWzu58a{23XdywNM(rvt63Z*dY(Rw^N$V z+$9gr-YpNkzek$Q-7C%K?w01Ww@b5`Tcr7WF!M^Awaxy1-d?@-p*ef>Ue0mz^xC2IouF;RRBEW8_w;mAFm5Gk%BEo3u+BOxYv%zOz>v&DbZ6 zXYQB#XCIUY-ajM{&ihavT5wpJEjl927ax`HF2?KJJ@ThT)1=p$ZqjSjYbBP_O?qbZ zlkX>Qmxq_&+9k*Io@NV?3dx71DdyswO=caC#_#QyM$?O=;oEzq{^Z?K_syMu@||(p zrPi22sXlUxR2{ZiDi6w&xPG}3-8)+%UeA*7_)H0X6^~GSQs85T6SEo_kVPp#mM0GC zIqd@o53DwzOfMiV64!rIX+Yz4z`0%OB%N(E9f07x51`~D2=b^jUj&=KUw-)Z3KZ0; zA}1`7qp%~+>sd<{?fQ*0o3jgla2!Cm#|O|H0y-#--vyv)`=sGi0D236CKAvN0NMsX zTfKl{y?{2j0A&OK1O{YL8juwSneFsms0y+HaWVyj$rTV5PU=p>zO zG_6SPgY!*h9?)Q#&IO?PP|yNEO2*IcY?fJhPly}?klnCdj_tGL!l_t)`N=y=q946_l_=?imU|0|BUSu0-_$ zpza$ajDWh@3i9{^A_KAr04NrR!&UB!nPQ}D0Fgcy;bL5ri_?jkqYKq3I#+MfZYRwE z2x->jy#sPTcA7y^MKsobk*8-)km7T}BKrYlk7IjbA6wFMWmkD<=60yYPRHheL$Cx) z(6)N)^tum9y%&mYFnN!rxB^N7Aox^m1ON@$ER_c2Nlc#{iR!r#fU-0rLI?;MQVI|m zkVODMF;=VjO|?QYU>b!o?~L*rbcoi5jB{rB>25slz&dz;XE)0aHt-D_o@eLQMtb9RZ@RUfo6#yAZCODLJ2Xy>hKyFkcD5H=MNFq4_f{J zXQA6(K;_gS7CkQRlV*^%TSZ!|S&JMFDA5DB;KD!WqZL0@R6cP=EdUD!tr17|Q zNWtCm;M@bSgD}=FTYX+QNL$XSwP&hbd)Oe@NvUKi+M8b9`or{c*Pj3dnz54sSp)zS zW_f~YTQ99V$R~MolTRIDnz0VK(yYo5r<+02-fl(}nOgLAkqv3u9%-1AB@4IyLc5f9 zti!Mm9Rr|$rP+^2?+@C^lQSmD{Yfd(c;ZG?T$5=#q{+K`QO^Kb;W(+~Uwc$NrhD1x zMWs{mKIz53hn1>7h?%jI0a^F~;^2P+QO$a8&UEL%q~@Py;hJW?-Ha-#=2ek>CaOCT zDsobdyW9{5xfbsYl-pN5A|C+=+qp5*-cP~K!!BEY^7+MZDLmX*rsqB(U6;noFQ(7K z!El$Rm9}+PYI$3`)*eSauI}Y+@8zWzV`l7RV6!MS_=q28{i^q~HXs{PsWgjsx|v%= z&Y6fi$NblhMo3IGLYlNg8YHZdeIM7gYYzb(cNx=-=7z?fdEFUHK06;OoszrbbiUnA zD+i8$w=iQZZVWew>F%Q*7H3!Y3f$fiD`RHtc8d@APlqX~C@Vas5gz@Ilu{8U4WuHi zMQr)rj%F8ZyX_MaTK|MXX*qkK96uQ&m(PXBjq@J)lAun*PQrLlG|&tvM^#r(2Fr-$ zznA)BvT)YfrD}A;;YRqR7CRTx-qfCGo_+j()uY|Z1&FaSX2u?%K$~ILArBaOhI`?+L@CXY%v1Ap3`M_*iARdLdYDoSVYRS#li%#6K% zjQV2+rB%sl_@6(v+O57~LvpFeU5lKK#_r&gYG|#cltf75x5Emh?zjS}o0uzg6EdX1 z(B<;8QKMw)>c>Pb019i6qp0FfJd&}su{0jGNa|16s$G$)VTUv|M-PO7;5eye9}G(# zElln4RS#lhtc;nlmyup(kQ`fFU8}`^^mp}_XHKda6=_E!Bvp|s)gb2*NCjR_jm>wix53mI?-XR#9L&u# zm=_M#HitretZ-6`8yc{4F*e4?SQ&GG_8w@kf>*H`{rsm^+f|o!0+VW(+&sX4mZTaX zZ7c=Jn{F)JD4r(e6ciQ3V8<0oy@5;Q+~ru2PXPx7`8K-Pkz=v)cw&Oo8I_~yY0}B4 zhI45_CLGipTRDJ(wN2MDhr*K7qIv+w+qoP#jFGW2<}$jM|KJgue_gC+{b6E~{t~IZ zFC;tF97u42GWLf=hv~R>H*^+%qb3D~APKAX$XsdlZg-KJfP)nK5|GZF36sA}ikDi$ zGUYpC?T28!)&)jWirtEE&>T!!dEr3ST6fA!EyTi@7#m|`tai*kj~C?)lB{e+-P7D^ zv*dsc$*D)0YJOd<6r_^Etp`b_-0&?Wpb%uu(fD~lsw^saROAZ)x@gINMLcS}HuE{D zF)&qX;d`c$LP4ETFi?!PaYr>&Dm$pDIqX=3qb=P9r*vwu?jR<{#uyoE1=V8)^DrD% z%X+kJ3&^n8YFh%yU5`pbV&TqKhuKMtnyO%@ZBTZ7sy1ws)b0JgT)Gx1avkmbQm~Bw z;J>8W8!M$oLcW6Jp--WIICaJg2G9v#QwnRald@TO)9Oxe7)#sL#Tpx9v}3(v?eQP1 z=6tGcX#IZtSpAix{#w#NLOpUrdKHjNO=5RL2Vt8vYT~)XDC!AB!?yZTzsEE{ z%TjoR!P-KYUMK*}4&?;{_^KKwr4)`+kjsaI7#IsE;xFZaAipm~wn1f#Wu)jSeU~^QMbTbcBdw>jmlLO=X#Az`jKMxJGo}i6tve0V`fFKDe*G(}&EgOB zPbJAPK&@2aI&bd*49_}I^^)(f`l!u-R(OHFi8L8+Q-P$i0j zy}C|n#?O}SGyfuC9hXY@YwK)<1uz?EX((D}e87~U8ubl6(pUQY6~Zxt6H}TstSa>% zvHmu5h3&|4+Zq4bWE5pmkFdG`(Cf)i&I$?bl5RtPL*NR)7=Lz5fw-X9spJR7zt+$f z`b6L8BYmaM|KhYNYj6Rc8~Dey#@25~4YpofaZR0iAuuRA^&C~H@t|q{QPL=^v>Bid z5U9~W(Nyv(2C3u*V|<`b^o>5+zS8Hf9F7^R{QM^({PRd%>yZ{uTCI``RL(Cfv(4^4r{=;PN8$2}-p?hsF;HLWTQn&Xr@+^4g8zKAR zk{w52e_vc;ZD=>vWFx2mSB;ReP30}G2|UF-gT zUq5O+Gq#V_a_(9b(X(176qs8TE@haX`JE}cTHkOl=ipqN)2=aGgKK@G!2}v~md`ot z9+W%-scnVFHnP6|{NvVB37xEGrzTo|n>F8RIWNs>y)YlP#j$+-jNkDZUdwxUFXyo5 z;+&kDYjCY^?J%lhvE(lEEW#bG%A3`qUtvDxf{mU48*ej2R7ECkqkg3-rCPP`)Gl_S)uKwZLKC5ht%B52DW#=C5Jag~wJ$BzdfVztEomkaGxvFa zzdLis&158#rT%^Y=kxiQnatdCp7TAw=Q-z2LOseh|Fq&d zYXf5KeX&pW4c&zzpbikz*AdM>tRb*GP$!5f#Gqv^TreJ!;>2IXM7!-1>HMkv(SN^4 z@6YWJ2x$NyP=xa`)EDo)@R>+Ye6Aa=>9kj*!ya6Z$3A#(FhH_z6R4X|2-F&X@^OUq z&u9pUD;Es?0@(;=RE$V>fN1xLNb4w(wh$-CiFU<=Iq_Zqz{%1jghEh;bNF+<&p!D1 zj=1i5T;B%$JiA+@<;V7Z`TiJ;jx)8H1$?izyY3K?+tc}|?}VLx;w-NXJHVw`#yuQtZ6u|=e6gh(yKKzGhUY=|)) zdK(K`#1a1A+XCY>9@-9n1jdPtuA#jvekf7}fmKIJD`*t2;1~ROn^*BI>$&Y9S%h3PWNDZI)~#{!}ygqi})g*a+~b$kAR!t z@cW2)Cl-S)$rPI5m%LetIJj9Y7-Ju&4APv zlWrenl@8l(O7GRN(r?v4=@@=d{C55&eo;1gp6^3u=NPH=6#8s}$+LehMlHGrVmy@) z2jeM&xJqrX|BS~3Y#c1$QS(k(|DJQxyc74CRuMRZXsizmf&nm)@>ngiix_Yn1kO~W zi;Pq=>JcZ~nxJ-nB}=$@L<|*4blaeFG%h{5UOSZfsKarrX>TNu|;8hk#?{Y8DBHFmMS3 z@HikDF5>EO#aIhi6Y3&(rl0}Ia1zr*chmNJ@@&XAG9zGrs@Rscmgsr@(qmSzJh$qs zJh%0hwAy9WKgXKG>kQ|xzM0_|wTFvT0dNfW6i0l85o>`kkwOqR2tZ20T;891{9ZA~ z^s?4k44UqR++6@T7S@IQAJ_-vz+9b@2!yL;xJXYm1gxhT#8h*Iq`QfrK1!4ptG<$H zlg5j-q?KrYZ?}{kv-*nv%vI7N=!`Vq8ZXc6usUmw**Q!trm_LYTzeP~7q2MdD}*>1 zbDp&#dGSd11JZ5mY?B;Q%vzgs{9a2O!fta{pmQF>K>09GK|E&wTqU!M%&BJ7BTh!& z*)TayQU?V+y)99itvD-F$Bh+jadVNknoHusma=_+dT;3%5F}3rePUvo`P6R#_NN)bB5aIz*9XonLlR7B-D0HGvlpbsd8%O;kz|p z$2fMF9|L(~fZS{BtHD*_>d-|gQVl^e)flwlBy&xoo0uX^s4a=o^xZQuY3xYR7CtGm z$SyvAKM>GC+D&>_8ozT|8f~~G4YpZzH!`i*UrqE)ICKsd#el;&7!ON;;T|q3xai2)AqP|&4|AJ^qf=L)hChv zMyC{AL`Y^A5fUv;YwM6OIO~CtZk&v9Msk9J>TR}2{bh0T>WCqtz1~2?srtGsfej>o zVthwwG4^e#wfwx)Tz^-pZ?@WN4&gY`if~F}Z0=f&gYg)tMfWh?9EjUI55nS+W8Nw4 z{PZvWtm~M!XRT_p4!I}qzaG^Mr`tRj#I<9thB?((k90_M5&|S72F>6J$(eExSD%j3 zVQos3T1(<&%+P_N1=fb=9pZCcwM3hL_k`?w^%;3;)MBZ&@Pt%Zds8ZHvg!+9q?G}u zmB++978M{y!V?On;c%IRugZ>^wVu#{l-jb(tFLRr1IejqC#w`I%X~tk`D%_ zg$qD*Qc(jEodg+>bTjhU|cNAf5v`CG`r)1>d{yGTJRTJ9`RRgLnGN-zKXtS%y z#*wY1*@!o#;v2D2VeK6$x54VHIVs>k#;!#;bi6sWTt#P3IJMHZWfz~5(xG?c@pV>b%`u!qS1=wf zUQW8lC2m)74&3@@A5D1OJC{$oF7o<0d`b)Jwy8f%?D~`x=)FkPtS=pq+&d{3o#cRI zPB#W^)Fpy43OGTP2PDGsU1xzKPRNjcFN!v^k`6-nIJ2T%Gkl>6c16po?7h;>G+_57=m7wV9K9fh0Lzjb||TU%yM*OotT z`D1WyncStZ9nyR_X+=7a5RkJbAy@{@a}ur3Rn|cP5JAyZOuuqr7AgPw2^rM4w`kJ< zVS0JUc!U5&rj->5C?hg|wKVj&Xj4kb+5t_a&MR}J$eb7{^!^VOeP6v)u&FjE|f#nj`kKLiK+z2IvG@)ZdQ7;GEAqBA}JtW-#$tc_mmMLer zNk33R1jW>Ix@xUOO3#m#{(b!64nS~G@)SE1nOaI@atWw73Pv%1Nf=*TLi;t8$}i5A z{PWL9-j%oIu~4fW4&ult913SPZQ`N$@D~`6wZ@Q}tU~4Q=BJh~J+^f52lS_(BF{^|uY+qcy9a>y$ z6N`yVED9A7nNV1NWPCx<#ubnqFIALsy=I8dw8N6?og3mEVokFkrzOVOeNWPbp<&0H zf`!{O%k{~EE+g*-*0ae7FDD?wNuHz|gCitboU5r9a08Sh^?1{$!wT1=XsAVs&OIi5 zdv?Y00m39e&}9cQx@{4e-nEEa8bK(9bT9%i@@hVjv3W&*8}pdF|3Xdi^$(C7Q=-M| z-P@vqt*PSjL_7*Svr|j#zwXOEV38`#NG#8hmCuL$IRRES!7)QhnQrcPH+?XOR;Qa- zo6MkCqYPLDLlUIW?4#1BTPLy68M*+10+6}A3(E8{1?0^E1?1+a`~Z^|VBl_mk++gv#Y4wYc%m$Wf7n0N2F)Rc6z$#&KTq4d|ZmL zKHHpIF2>}Nh?O~I#n7B`X%L`{Oj!abLR#6Qs+8?91(2deWg^`eYulZcU%-RkI;J=i z`HUZb{q!?`U8$*^`%K9yK-$AeqyRPRg#`%_$EYWCrAfbmc*Rx)BnclxDgSQU=nkM873dz@!AE7i#`fE;2OV zduBkC0f|oXcz5gLVY+1`#Y})Gcj?BO7i;uxw1X9t-EX0`d)A0tW$vU{GBy&uv!$3A@R;{YruzH7QH! z=0S?FNJno2pnu`D5sQm7#Fq3UAjK((fRlo8&)=%^T@fHSKisn-Kse&KksBtW3a2 zHA4>~9oevhSWuHL9aa(oNb6rwa+8oorj`wdy$PL=ZgkRYH|b_LhzCVC*Dr$;4sXSz zFrK?u%+h`WB&6cMPb!J}0PX{%9|ti8yzkO4$I|cJ9+qzPyAK1Ck`6Y1`adPxw@^a` zgLonX(${cOC?IVBBn$K2B@pV5A-QE@mnM?G&tg%pefJ>U^b~VA=plfX1JDry`VOz% z#NjFpaV4P)5YkpS>3!5mLUQew;&>~2R*^EU=@x9YszQ(V1e2nW^CVrgP(jrVohJ(h z@kBNh$GhhN=~FwTh`tYhhjbl~#&m2fs^4lr`rZyE7?6w<10Z)R?F59hb{B&?X^4xE zt{hRa?LDL^`nbsr#ieg5VHnemhe=bqE&b!B^73j6CcL9}0^+f{#ZNKns$c+5WkcRu z5d4qPO4b0ZdDVOshK@Bs z=NXX=#WDVz9nuGYwC!a;;)F-179ov+lT^PDd*L3p7rR(1`|7%UmRq(C=o`FtGj4j) z5LXiF*H3Wxc0i&db%(o*LnVyx2BgaOt5mDL3@pk+DZX}p)o)lw^i@-CoK`p84VIp4 z$a@PWa`_<6NPrXpTmQ+L8*J7u7dNI=5~nnw!t9!ipb@u=guGEV>yt zJ?W5827WuHWFOLv(63QTs;g08!M{M$cQB(d&GNTtrh1)=QeO!stBXNV z=I0L+K4U|F-g7eF?!opCNLv6Ykxm)|8G$&SUmuoR#&@bO`JZ`7IybAG5|HCF+=Y%4 z(ARiv#9)ri{M>l$=DCLFNk~&d+KIyb0TzysoN+lGWBt|f#wC;=SUA56G8$j_6wI%h zZVytC$=|B`!oyi6WJBJ^pH*_<6D8{aX*-SpiCisz2H~RLhvt$oEy_ygIwizr1Zq;S z0SM{qZmf(*g9z#B7fN;k65V-=4tI=&g}k@EtqRNSt@xK7&TkXVjg~4uqK}$<{kZzw z-5?$bfNaQnPU^}5oRL_Qko&g`C%K4VBK>lR=H|T+ta9vT^z{{9^RVb{ybMS~AIWg| zZ@8y_{2b{|Ldrs^^ z6t;gribU=^oix_*=y>jgr}JFH^CUp}9p|LoaMC*LxK{yb zZx{8ckGE<820ZdSv~g>zF}$~WUAutYj0d!TEXW2+$Ky`>I|rnXaRf+YDiMSST7$ry zfZX(-Sz&IHjJozSHk2qp3K^oT9V@7*n0sX?H$gnC(ORtFZBIm~bHek7OXnGt4X16( z8Cdx<+}r}v4(2|c_js7z$4Sm2x z|LNaV1!B&=P@3*B8VMGvT0wQ+AF2*pzg9Lqm@JBr{yOylQWTE>=|BoM03l7?^_f*A zf2Hnke^>1-Q&M%noLPI)b&t__imc>+*FufExJO+UOfEa5!P1GC?A3iZBLULKs4=$* zX`FkpfW~bCpg6pC(_dEg^-gu6acwmibLGid|L(`r#vP4BpPW8K1z}Rj!oylNNQZ<8 z|7#a^HbB}9NcUKC+yGh+K&J@^&U4pSRuq3iS%&$mg_vUlC?AyJMi-UJmq&Gf-0`kD zs(poBjR&@D5c-k?+-YBQK-$YA0MlxGN^QW|$qC3!Kbh72Gs?Q|4Ye<4PSpl;}-iAQ6xXb-8LY7f_ig@PBH=7gx&7TjrPyE z>mxHtic`rSzpJ9F`>K~QH-2k>==Rj?X=AGKtB~5ATBs>!BGh-nGf6gyknX`rmv&-j z1Ef7jse2|TeF#8j;Gjf&#@+RqQB0UR`)p%17IUframP+^&y|_R%FgpaqjpcJ*;n_f z{|F|QUDB|HCmeqOX+MtutU(j7+o6D;C7{^U*JVZ*wyR&BuB#?vF7=>){7{zR7>$rv zwCe!U+_Rh2zwVzxy77FH4brf)-2;ScdvGK91|Y#X@qn~@ijr@)*xz$^ou^7ZsqP;Q zQ(rf$r=OPT92RAdw{%Y%3t0g#FVz(3HuFHRI-|v*aPy2}1oN=x=?R}jUvdvl`f-Pn z&)!CHo`u_tw@{;SZc1iPkQtQ*7*;qY8E&F~(68Iir6pW%JHJ)^ zG`6=2c`Uc;j#$e<{1WVMhhsDrH|_vDfwt+?Tm|l5q0Zhqs4T(>amBML_LITBG<^QX z=PG{pGIg?L12rA7wSxF7WZq+CTS4};aX=2t{~TMlYI!w$;!A47$#8YWIk`tD?S#?} zhp3Aq{neTZkE?-yh^ZFDZzi&I&dH8O+tN+^CXT;P>Nnb7g~zT{-(CMy-LW1=>aocF z4Z43!*-)=;0n9i3{M2fU{UX#5;sKD0_sCKzy+$|j)`VvZ=6lQ1#nh1D-Br-GH`VcT z8`ZV=gX*4eyUqsP`b=5QtW#G%d`%sB#ZN6OUPukVn9U%6rW1FmRDUV|PiY1y?iQ?1 zjfxgjeOfh8v-&_jH_4DX1buVEmso+-aVNIz!!{u8!yYTV;NU&br3`-_CFRSX<~$*1Z22w`8Po zLOg78)j3I?r&zZLj!xsQL-9F5@I9Vi3?PL42%#tz^_UwPH|6l)}IRfje@zwZh{6mbHrM0Yo znPm@K>196xehYN8W|eh!(9wC1pFND@YB^_pHST&$DUGzIm9(&?mp);omCgaSTQf>8 zfm8vx0#r#|B`Q_Ivj4QKC`q;!a73!vsz^Yc2Bam`7%_C&1Vf7BSaBLaBD8ox7t69U|Z z00JT;00EMwmq}xQB$Ct`g9;_GPrg{a^2F+W7vS*#&*dCSAkK-olOROE7C>DW0^G(r zGO?aV)Y|@Ohlpj3+3_7~?2dc{dItdu0+(cv(RfO!G#;~4s)MXRABRM~l6(_=s{rpg zhA;tu*Wk5y&13)qh+50Iop;oK+PFrp^`B~t+@4~M+MZ#J-hLYaN?_a$sgK}k8Px}q zbb~OH%zi%TU*HeFW6inTYXpnIHE=C~aS&nb4#E0vW1SgTZ;G?}f8a5Edz3Yzs22pd zf`B9v1W-kc|jbiHjj7iX1q< z>tkqTJl7DXLO~ocqVRjeQ9IOH10x~Ah$6xI3lT?iC#rvtF{JQk5a7HutWc7WQH{qI zOYAe-!jm3ExI-cd9aGX-(h zz->z*fFyvxMq`R4QU^ubF^SjNPU2nCL6kvwImzf3$i|qlL~$@cPRM&Wj>oI>9C6A; zDHnv-wS@p!6=8&k1lS)Ea2{h*F%CeiU#ii+AOVZdBDu8?=sjF415jD-1ZEJgEWsdN zk**0Rd5Un5NrHiY*zrV(#7?LJcpQ$`=c;)OL3kZruUrVgTM=BdDFmwF9vsKmtN}`_ zEEV&YV)V^V!b0=8;Ccuy5g8RkyhDCS#_McX#5<&$gpaxht=OyWIoKhwwJ zJf3fh;uWL3GPsW5itzLZLxe;m5My*c%g1L)4hvt<=$#jThlOnkV37@Qw;99i@XLA< zPw(|+ypicaq`QQdfZS35uh^>-2~&wONtj0L3dU3$@%TJ`iXn^^#3P0hUJIcs0_)^@ zU0YHj5VjC8_`LznVa)h_3*!HR?5Jm600J!MO;kgW@A|zT`OJC-$gC&v44j^>iJw>! zO!}l^iJ!QCL*geCN&NT%Nf@86kVs4@kick!iRii zIi9T79v?!y&hkk+LHIU_AH7u)hOL+6!K>unF>B?2ThlWYzD>;7gy2_8(y%pBZS*Ed znwT$1)39ZnQ6|ahdn74+uZ@{|9Z?KHOfhiXpo(y;DWn?0SW*N~AA<3Y+DgqEt2p_) zjUKtbw0h>=uE&LjA>XweBkNteLEy^U74ZZzegbw+BR5OUA*`Qfu!Qe)&gNuHP^)zfxL^;x^6`s}^HK1s%F@+^vBS4Xw9 zU8ovZ7wt@06W3vj5bIV0ZWbYess^tJjFDjGqw={!sy7T9j?~=S;NzDLJAdQREvKc` zJ@;a5?C+yVco_2CMoaP?uUCOiVBik%^mJr@eZtrrNglFVI=#GIj-UC!q1hgH?%Z+V zH~99Rx6a6K7UfIzQR}3})B>q7t4wOl-KU_$NZ&2VGfE|C>Q1RPxkwTx7Q)g{Y2%1O zi5pi00d@dfCo93}4dFy^s(>Q!F-GmdxYy~Cd(r9+ZvLjDOIDQCHK#Zki->2#9Z@yREjDDZQ_ zD@yUn_vK$_Zju@kw@S_QVyQ_XW}qr2=SlLIOl4aQMy`?i!&geZp(}uuk~Cn2#0^{{ zaYHjDc4V%^jxK~9?T{F~Q!+)+J;5V?LOkLpCrHj>t4q$`@Yzx4?7?xVdFlzKy10@3 zTpSx$2>B}WZOc(xMv{+RicS7zc?5)={qVXXkff6Ek3arcZrr$`5KaUWJWr1gu750@ zGqy|3QER2<*p1R?+&cOF(n47dOFMb)va&Q2XJB*NAb#JK#gZ~~mBbEQFR>$k@*u$W zauIY-@a~Qr0r)_#`ao0?xUsrq4|dr4oJZ&ER)H?rS7|-!qDJ-y1{T=lWA~t*&%i^q z=iB77!7}SXJhqF8Q;VhAn62`E(l^V6s~;)iNb*M?eWXAEDiR?av=A(e$y>@~^o9~S zd&L%)gB8PLD4ITpKkG`mbnRn*8M+P)x^ITW4$Fc7MYag+2^7KH9eJvNBG8J+5xH_$ z`;NX+Tno0Np52?-?^+K$pV{w{ztfleYW!AeLcX*ZyH?)5ctr(HlCNLCuHYv? zWg_U$^yj8E@n@2(uW{|#HMx5As$98p#RY%oXFQi~kBPvws}dGw)6UCpQJ~u^yHzw{)@NKt6Um@$h_2 zeiC*eY=lX}*URdCCseQ`hNPGRR3?HS%;WU2eB~T^ZcV-x;KL6;RJeTkvI2kR@f0ni z?6@TKgC!|DLQE8a)=Ck75N`zH4$z9ogChXH22DUxk}GoNu=g29XO;c0)r7~Xi)aC$ zegGB0Y+zQfL|Lja$o^Ple;k@_JOoIh3SdQl`p#cffh_>;38W_9 z2WN`A&pbM3{~`&bM`@M$ii-xIG_!!&z^q_)#9)E3XkM`>+qluZp~9W(m^`UAHcyhq zV<$46+s#$7{?!vIKoX-fvN90}Kf*Q4<0>NGD}c^^P5z}zm(=gHqc_pCllx^z9I7DJ ztpbQ(Rsn6;uptV65CtK~8M$*<{FI~P)(A9}UDc^5)inh``Ptb|0dP++9NV{H$e1Bp zC3e7i)yPt?&HH}(7Wo12@3V+a^6-d7Xm%f|05utviQp9?9L(dZLcUi3lCQyYI3Amy zD{+H2A)%O9=xywA5Fm;@k6#|qhCMcfn=+~1AL4*Ja_F#s`6)){>_?LO6x`t>2UCCm z>?Z=EsO*OT(L)O)X3$oN>AhO+AGJoF%|9SV-@B;pSiR#GY)4yrix)4d-?`3}yN*kIf7~aG!Zwq=jXiESM8J+nRRMTVRp1dI03`RxXD@if zVe>9W&&?Kp6kL(S$y0O71wgq4+0S6y4ffBJn!R6^`2`2%CP>%&c}<2%DqqbktcnPP zmt;Sf$D8w*BJl>HQdpt$F7kCNE?C5a!7Nn8TfzZSs>4FPx|mK`sD95o2!_uVK>a5wq-Tjvz<44y&h zAP60p&NLmkCc-O%DTGOCRp3WFQ4#s30D8?AE?iK@vsZm>WQJV@1JIBMWJ=64n96(&&=Y60MPwg3eZ)o+Vb>#u>o;pfkvSFgn9A%cb<;Tqm!&3Qfz`2^o%uX<)lmUMg}M|!+eB;A*8m;actS?Z$V zqq=3F;ck$~zS$Dd*S-%>$?6DTb8M5s)Eh>BpIXU$Zc;~oV^0ffoI5c>i7Us%FH{|z! z&*n%(#|#Pd*aEH`&XE0zzpgow&=XvOQ-|FujLzA=iD&k60#3vUAwUEKh=c%9{csWMbXU?3F_uqft1wZ4p zx!e1H6E;Xhr_~T4%jS##`Bs-~iANQGkW+`<%12E1oEM^;64C+$Oac0$0d;yw_MJMT z{8umT^AMpbLR1Fxd~;qe@pntU7T~@2-c$JNU;nD!qXV3H{{u;Uda(q$W`eV9H~T3- z6n>8Bmh*x`ZzbcQp9KW zt$wEyyj*ldB09W`DnKtFcZL9eic@gwuw23DxcU3&+V+W#009bsMyv$rlPl5P)=KK) zBDF>1LQMfaiwJ~C7~w~1W$@17y~f>=A5H+0Pw;0Zz-zGNh~F=gK<7>14!yu3pHQ5F zTZiSaBM{RyD>af?uTO>u0oafd0Nbpn)U6WTak)%fSElY1xi~JUsv?+wLTDnYB7{a& z2-on=XXXoBl9-zQVq{s*rySpG9fg)iJdS>r>zor8e6PCE|;db>z%TG zj~spXyj*qm{(3=G6@jQs1j3KVyM=d7^Lk$5iMu6V3qWwL*Zy)^B7QYX0v%StZeT;; z&J;m$3yy87{YPX}*X+ISNgdHl{`3mUYO!>gmoJyE+0W#eZCt2-UXUrk-HJe%#CS;~ z{KyRlzw^!c&Fh-$sf>KWD}W~dop;_*$G-L6IT^lmn>6aQNUSH8Dee@94xfr!aBNc@ zIs#U5gP6!J*>9>7sNSDYO21tq{TCI=G*cu(-b)sIxdT8}TbIdm#PaSM(W*FGa)ef_u9BD!RsQ`Yk|O6d0) z@{=*I$W82a7?k&d#Ag+O@RH*t&x?wP_QE^2d0lfopN0Il-+tQ#Kj(G1L;OQJ68VYc zHkaU3aSM(W*FGb{`cAi6IOwXK{jW&E6EDiaQ}3%lIr*D^Z@%f`t+(D%FfZ;E$4{Ve zBAG&&FiEN^{N^#QV_x4}mzQ9|k7OOY=Hk?;Qwk?fo>bs_6!`5k7bWSBup?R#I91$& zW5u=4h_L>5kGkmAH>{2jpu-yZ)udPC*s)`B`0!!bzkk1r0|yQ$96We11cweCQs6oI zRpZE!BVqA>#v5-am_L6W@Xj3$<~q&w6Mk`O4m2mPzy5jfr>#)vG<~IXO0&^<#wzKOzDl~z zS}k2?uaRzZ)=Kwh*Gi8+uah40)=AIj)=SU%>m_x6{wvb!d0@c?>HPw*aD()Daifhz znbMb7oGJYlZ<2mXZ1i7BY?l5nZI)-eSVnAd5d0aBSLZ2|&&RoW4PL9yBKz9C7ZMw! z7uLkJrDBa-t6KNG^(v0;&jNGTBDOUu#;)nBrOV7!Dt5&K_|V)auBK!FD-?GR^j&H8 zfm@1y<1mdl%KFz14RFv+w+B$UKdz9#A2TGfLxx2CX@x{Ty;5R2u9Dc!t0k`M8cFD} zR;s10m*hULNcH|3rRKm)xo5~`sXcs))E${6^~PjNgK;_1a6+y$o|G>sQwyZYv~AKf ztx%fJERq(pw#&V38{yb@_MzeL(TUn=bulquY|pcE*P`<^eB z_6z)>K7RqnyUn*^$E5V$_YVMYEcgnrE7O&epy-1qPD8yQ}VNC^+G9_Oc zP0Evo<8!6{*c_=hI$P?D*ebP$ZIN1oH%ZL_nNq#q21!D!iK*)(q5E2i>#|y6I;~QF zyhJ^)9(oi4WL;;+RwvMkI&Fb> zZI#GwSrXMFTcT5QBo=qXaeeY6zF)p14%jA1gA1klu zqjKN!W72-bak+oxU*v&Rz{=zD!1BY=e(^pa z+GiYBbGBP{6xVn|+AKMuuE}fP`@%tK@%%w){@i|P`sdfx8XM1gRT|CMD-EW9?~(db zc1hidWm0=wiPRchEHw}#V`a>V0}3R*Z=S^V&XpMO65SI!o$hG1U1>MiesT+{I8@{V z;FcWQ0t7W;{t|69{dOH3e9=DGL6>aY1?Na)k6el3w>!P^CALq2#P!=I@y}opgRq#P zJEi)_VyQW%RPGtKOX^JAE%l~G=lm z`>Y+0OIm3s`DR9`Jh=LVJh=8vocpHSk2%_7uKQM;RCBj``7hFD*>P!qz4Vy0T6|Pm zzW4@2I3mrTKP=6jJ0wk>Jt!%2_DiGm*QMc%SEc^6eNuPw9;rQHx6~R}CN)QwO7#)N zh33)U4Z1w2Tyt6D^~*M;~WigOODC4uK10Ls#T5TG^$s5@B;fO2*O zX!7g<1bIjWd+&lHDtKlgtDr4NAvyO!g!UkdBD7x#L6#nrw&`2twUhUXyaS>S0|yKo z1Ws9U?o4(0IvQpBmkywEPTB&jh5!(fb5U3dOra?_uh|L-&=QHz0&8iG#At>DX@W{^ zOaW%TE)5_+y{U$O0AtIf#;6iWrT{~BK!75N3nxGq9|6cMIj&HEKdsO7p6C@I#t?v6 zz{PM;HAa=HMRKuRbp5IDQ3TP5HiV!U9IJo=v_Q$T3R=DBse+eT1rC;kHALLVD3a!Y0SN3xh*$)9wk*rLvO$h+Y zq;)och1Nq1btXZ8@w=qf7zi+u0_?N}7!WK#lq*0E{~joaLj`hMi2&8DKdhMRJ&^)L zXaR5$UW^xI`Ee1|25SM(sIbU;uvjjdi*GR95dcBC0w^0|19YkYnb<~Gff4~&22ozv zC*Pd4R4!hBsAgLYv!5BSaRhkRl5K|{lD4z5k^P52IfSozn z`t^c7-V<3)EGw#O3PANKKq3U-qN-zYA&uDS1AaDt#L_1TB*U!&He_NEc1bhxWYykB zREEnjfC3PQoL5-Sjmy#UqvvN!yM=p^{n$B?c*k~J@|pc4KTP(A*pJu$5z9S64HyEz zdg%ZZfR3O9K!Q>LU;ih_Ejjkt1#$4rB zAUUjmgf@$?MSQkIe!Xb4-1;z5Bp9Lk92860HUgw!~fAm7o(LK*fCk zHstmJ*bw`G$A(lDa69U)0`7>E2uE!Z7D0@E`TL~J)OB+7bR&^74%zg74ORnoKBwNR zEA6MRmbMFDmG;ZA-(O)ja5h}!`Cjr(>+#8cclSg4LE`w?PckZ_IHdIj+s4Xc(P&*=!(sChQpFbeY(+Xt#*2hJE zu7GHI|8WN-o;YF29W>?NJ(nu?PTMMNp5H5NmmHFIxXEhAo4J?lexit1@7-w1he-G+fkG(h}L;#}?P;FO$ARDr` zqcyNtcQ@p%0;3n$R^;r6cyoq3(iXFSOXb^X^W^fCcze%(5?}?GfcIZG6)&S#{!|`a zFkISCT_G)|Wl78QLS7rZ8|7aow-ywhe?Ipl{}kJtOn?8n-f{c86U&VCF5 z!rKqHB&X!o=Ga#NHU)lJP|N!MfM3|R&xQ!>1L17QQw1#53ada_(SdR+f(XrjpMw~4 z_e#?Vn`Fy@uZvs;(Y)EB049+A>J_^m_5itN$@Ob7vj6R7^75|l$9 zN%N_>5VQnUwO?Ao=9u|@kpUSRHjh)gS@2(+VTUy~+N3#G&2{&MFAh=^4 zXGy};fPg<6pop~+ml&fF!<$F7xsQ|Id1-cM4^ z#|;`@LA({h_aMqA=K}Knd$H1GSubgpUV;ikZt|aNlq(hz=7oTN+~NM8nf+IQmcwlKJ_qs<;x<0N@J_UhS@UyAnUE#TU~SFk z*-c;BP6+w>uGh2g*E=75=j(WXNcKC;H{|Y@+>t|aS&9Gap>3$96&2UUdUD-i^+kdq zg58Wmt030s1@4WRb6-$yMG%2jL=jN#wg|AJSwPw@X**@D{A|vDFd4bx=aN~{R!+Q` zBp1&`%k@hUa_a*KLW`jwtPU-Pr!wx~{mZALWO44drRkV;(losc8NVOB23ha%d_VG; zD5muU?|eeDKQdhNwaMpqDu)%9xz#&{kyZ zidf!C1g9x05!e%dX6{oWG@7zq8ja79hNCj2`G{rm!?dw7X!&E3QTPoxda8z8Ivb_z z#TCI60`FaUFH*LawU%ZhS4fkzVre?}br8>9kEEoPO3Kt7(s*K?G#Z^LO$NOvk4}CPO%`OcNmB%EO|Yr!XCh?x!3OfRaetPS zDMivmeF?-K!>qTrntU|QYpF*Kp3GMd+_dl0dPqJJNj>*B_Wf@5hx2}&{ZD6}RUDGb zD%g)6<+~w&%W7`@V$MwU&5l5Os5$RCJje#k^vdGLE|pztWCNS0rv|xP!-2dB+GXvO_W9x^Cg8M!fKS==&aY4 zqjx*FwjcSX?}xJOe_r!z%24yo05G5)ageg5R{B+IZd-!LcH@3Vf}| z*%j%2z^$nv0{7On$3p}Ju6IYul8kCl4O$670`UraYB2m2*?FwB$j6QVyir3X+(N^C z_uV-8)$G2~a7>mop0OLEIYMgUovf$Wdbi^?+z|2&->=YmyxDJ%PtM34IkdT~lKtqR ztANjcu3K0?oi<)g>WW}ru>9`Wup+;HV2WV$1b27jSduFQt04`9X)$Kt{$bK~d3fAx zxp6DX-lkFj;FC+1oP9q=dM)~$)E|*4ji#029Nh4sl9bgr8SfIW{odJXvLd~iugKS1 zPA~ah>j}z!hkSyZk-IR@|En@|71Xm5YCUX!by#~;eY>wj@K}-ih{Dqk3=woCFuTmg z>{^mj4Ym+AS*!>}-qhVvZ)BE?-SA71+aUe};5>Fbc)fsKQrh|-NWCFzrNN|~5N@v` zodSjs&#VXW+H%;F)NTiBQJ(KZzSs9Fv>ru1I3ic%jNE;S?AJqA0iRztv%b^)Nlbo! zD?|h=!ml5Mh@kAKyeFu;Wo1bq!KntfH@HF&u&4>eQfI(wdG*aEA~!)kvi=V4crRa! zl4W@hOT&RLOTBT0XzF`x!VS`Gt1*c8X1%l3bQ>;gr)uOI)?<=Sj>r``v$^|J*{?_W zj>xjwS-)PeTwR2JGh~Qh_Jc}AK!EOl7L_9CYTykUGSU?SWYH$-OoUC1%9no`GgWTi z!S<8>4-2|-IZ_JtG?f;E=Hv4`sW++25e(3zv%#9gYp-{*-t>F7;cDCQBj3;WHTjAY za6^vB)m`p6B=EU7cT1Q~Ak5=A(EW^>h~ zyBUwUwb$#cw=Ktb#^ZQ?mB?r8ntX!XkRx(sbLRWa*WC^($R~JgCe5vX`NLz@Q<>MX z$E~^uZes>0g6<1WHMqSYNC;Mc1ztyNlbXGj%YnBWDFJSLjP2&hWck6kK~jr9X32Md#*S3v-?|l$ z)2HL)@flA`jlSz3PN5P>5v@VODV#|<0f9q^M-u3)SAOr1&-GSFzG*u)2X_=F8*XST;?unPRv@Ci^{aVH)B>K`XfMJ?1h+9G5C%jMOiOaBfwmMRgd@h_LP_ei zPNr`Bv3&9gwwq^TWXR%w|1ZfsS4#CE`5Y=89O*27v#j=^OK{`#d^Gh6SAZ8OXY@EMASppZlsE{l{c|L#%Mv;E*E(|HLbS|T|8MwxsU!`5$d=@x+ts#_*5v|3 zdkI&hLs-{pT;d(C_sx1uK6X2%=c|1_Hz7vMngcU-I(Z4|AQ#0k?Mh%xsm!f5TVH>%p>vNLWXR}lrROpf$ z0yI>YaAdkB-D@>}n)r~cr{!q!-K{2KVNAN>87pIE?Bu|H)=y48SKkjeveMAE3sYH$n;nKT}obSAPu|Cl=vPSAWXg@ zm6Z|#zHbn&8mp7-K~`fBADZocOhSoU=b2(eZ#dQ{&O6H znc`YfRzf@OvpTFf zVV5of;6HV8g56!pbbsQpHch;{X2if) z7!zZ&V`Qw1`3oms4}G7&Cx86gm!?*oR^PIIvmgTje4BYjCd5HFB+7v%Sk<42(rv&X<;abC}h@X2nOd&8+(Of6MyC zoLROIx*{|Q8ipXW1s?YlMbW}&aeSai)iX18Zj0ZuJf8ztYBmgkw(d!36zrwF84JEsO#Q^@H=dNi^rs^O^J5 z9?$oVskLxTHt}2|*UB|>?O&Qk`)P-^B`pNAicbu=k4BH^`MCAii_4LTXUfHJ$aG26 zf|yw4fzL7ed@Y(Lo!8H+VU>0)6K`S6h z_W;aNKI-L;gdWX5_28d+^QMUQLGWk3$Io~SkL5W$mve9~&dIrX4Ndw#eYW4t&>5%& zp&js6pM>$|hvYG9NhF&jpTn3u;CuXx$M9I5!*e+Y=Q0WZiu5WBO_UZz3!}yHgZ^9} fZ_e>09G3OpXwI>O4%9<;00000NkvXXu0mjfnonwm delta 8210 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 oU%O_w literal 0 HcmV?d00001 diff --git a/res/drawable-xxhdpi/ic_launcher.png b/res/drawable-xxhdpi/ic_launcher.png index 75728fd2bf09d6e66045bd8d2c2b3d9de475e78d..7df2cf11b7cb600fb2927b1bde2a689408a0faa4 100644 GIT binary patch literal 19940 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 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/layout/activity_main.xml b/res/layout/activity_main.xml index 3dcf6f8..52a065c 100644 --- a/res/layout/activity_main.xml +++ b/res/layout/activity_main.xml @@ -151,5 +151,18 @@ android:layout_below="@+id/urlBar" > + + \ No newline at end of file diff --git a/res/layout/advanced_settings.xml b/res/layout/advanced_settings.xml index b9436c2..8d4afd2 100644 --- a/res/layout/advanced_settings.xml +++ b/res/layout/advanced_settings.xml @@ -370,6 +370,30 @@ android:layout_alignParentRight="true" android:layout_centerVertical="true"/> + + + + + + + + + + + + + + android:textAppearance="?android:attr/textAppearanceMedium" /> + + + Lightning + Google + Taray�c� ayarlar� + Konum eri�imi + Parolar�n�z� kaydetme + Kullan�c� aray�z� + Ge�mi�i temizle + Bana e-posta + Adobe Flash aktif + Mobil G�r�n�m + Masa�st� G�r�n�m + �zel kullan�c� arac�s� olarak g�r�nt�leme + Ana sayfa + Ayarlar sadece yeni sekmeler i�in ge�erli + Tam ekran modu + JavaScript aktif + Kaybedilen sekmeleri geri y�kle + Ayarlar + Y�kleme Yeri + Geli�mi� Ayarlar + Kaynak kodu + Lisans + github.com/anthonycr/Lightning-Browser + Apache License 2.0 + YeniAyarlar + Ayarlar + Uygulama Versiyonu + ��k��ta �nbelle�i temizleme + Metin ak���n� etkinle�tirme + Resimleri engelleme + Siteleri yeni pencerede a�ma + �erezleri etkinle�tirme + Taray�c� yer imlerini i�e aktarma + Metin boyutu + Geli�mi�Ayarlar + Hello world! + (�nerilen) + (Web siteleri garip g�r�nebilir) + Arama Motoru + Arama + Geni� g�r�n�m kullanma + Genel bak�� modunda sayfalar� y�kleme + Kaybolan pencereleri ba�lang��ta y�kleme + Ge�mi� + Yer imi ekle + Yer imleri + Payla� + Ayarlar + Gizli sekme + Yeni pencere + (Hi�bir stok taray�c� tespit edilemedi) + (Desteklenen stok taray�c� tespit edildi) + + \ No newline at end of file diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 092b80b..bc61999 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -54,4 +54,4 @@ (没有检测到系统自带浏览器) (检测到系统自带浏览器) - + \ No newline at end of file diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 25a8334..9129861 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -1,26 +1,57 @@ + Lightning Google - 瀏覽器設定 - 允許網頁存取您的位置資訊 - 儲存密碼 - 使用者代理 - 退出時清除歷史記錄(自動清理緩存) - 電郵給開發者 - 啓用 Adobe Flash(若已安裝) - 以手機版檢視 - 以電腦桌面版檢視 - 自定義使用者代理 + 瀏覽器設置 + 允許站點訪問地理位置 + 保存密碼 + User Agent + 清空歷史記錄 + 郵件開發者 + 啟用 Adobe Flash + 作為移動設備訪問 + 作為桌面設備訪問 + 自定義 User Agent 首頁 - 設定僅套用於新的標簽頁 - 啓用全螢幕模式 - 啓用 JavaScript - History - 加入到書簽 - 我的書簽 + 設置僅將應用於新標簽頁 + 啟用全屏模式 + 啟用 JavaScript + 恢復丟失標簽 + 設置 + 下載位置 + 高級設置 + 源碼 + 許可證 + github.com/anthonycr/Lightning-Browser + Apache License 2.0 + NewSettings + 設置 + 應用版本 + 退出時清理緩存 + 啟用文本重排 + 屏蔽網頁圖像 + 允許站點打開新窗口 + 啟用 Cookies + 從瀏覽器中導入書簽 + 頁面文本尺寸 + AdvancedSettings + Hello world! + (推薦) + (部分網頁可能看起來很奇怪) + 搜索引擎 + 搜索 + 使用寬視圖 + 使用概覽模式載入頁面 + 啟動時恢復丟失頁面 + 歷史記錄 + 添加書簽 + 書簽列表 分享頁面 - 設定 - Incognito tab - New tab - + 應用設置 + 隱身標簽 + 新建標簽 + (尚未檢測到原生瀏覽器) + (檢測到已支持的原生瀏覽器) + + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 974ccca..d775be7 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -53,5 +53,7 @@ New tab (No stock browser detected) (Supported stock browser detected) + Hide status bar while browsing + Clear browser cookies \ No newline at end of file diff --git a/src/acr/browser/barebones/activities/AdvancedSettingsActivity.java b/src/acr/browser/barebones/activities/AdvancedSettingsActivity.java index d73c24b..dfe5290 100644 --- a/src/acr/browser/barebones/activities/AdvancedSettingsActivity.java +++ b/src/acr/browser/barebones/activities/AdvancedSettingsActivity.java @@ -3,10 +3,9 @@ package acr.browser.barebones.activities; import java.io.File; import acr.browser.barebones.R; -import acr.browser.barebones.utilities.BookmarkPageVariables; import acr.browser.barebones.utilities.FinalVariables; import acr.browser.barebones.utilities.Utils; -import acr.browser.barebones.activities.BarebonesActivity; +import acr.browser.barebones.activities.BrowserActivity; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -17,9 +16,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.database.Cursor; -import android.util.Log; -import android.view.Menu; import android.view.View; +import android.view.WindowManager; import android.view.View.OnClickListener; import android.webkit.CookieManager; import android.webkit.CookieSyncManager; @@ -31,8 +29,8 @@ import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; -import android.widget.Toast; +@SuppressWarnings("deprecation") public class AdvancedSettingsActivity extends Activity { // settings variables @@ -41,8 +39,8 @@ public class AdvancedSettingsActivity extends Activity { static final String preferences = "settings"; static SharedPreferences settings; static SharedPreferences.Editor edit; - static RelativeLayout r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13; - static CheckBox cb1, cb2, cb3, cb4, cb5, cb6, cb7, cb8, cb9, cb10; + static RelativeLayout r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15; + static CheckBox cb1, cb2, cb3, cb4, cb5, cb6, cb7, cb8, cb9, cb10, cb11; static Context CONTEXT; Handler messageHandler; @@ -51,6 +49,10 @@ public class AdvancedSettingsActivity extends Activity { super.onCreate(savedInstanceState); setContentView(R.layout.advanced_settings); settings = getSharedPreferences(preferences, 0); + if (settings.getBoolean("hidestatus", false)) { + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + } edit = settings.edit(); CONTEXT = this; initialize(); @@ -72,6 +74,8 @@ public class AdvancedSettingsActivity extends Activity { r11 = (RelativeLayout) findViewById(R.id.r11); r12 = (RelativeLayout) findViewById(R.id.r12); r13 = (RelativeLayout) findViewById(R.id.r13); + r14 = (RelativeLayout) findViewById(R.id.r14); + r15 = (RelativeLayout) findViewById(R.id.r15); cb1 = (CheckBox) findViewById(R.id.cb1); cb2 = (CheckBox) findViewById(R.id.cb2); @@ -83,6 +87,7 @@ public class AdvancedSettingsActivity extends Activity { cb8 = (CheckBox) findViewById(R.id.cb8); cb9 = (CheckBox) findViewById(R.id.cb9); cb10 = (CheckBox) findViewById(R.id.cb10); + cb11 = (CheckBox) findViewById(R.id.cb11); cb1.setChecked(settings.getBoolean("passwords", true)); cb2.setChecked(settings.getBoolean("cache", false)); @@ -94,6 +99,7 @@ public class AdvancedSettingsActivity extends Activity { cb8.setChecked(settings.getBoolean("wideviewport", true)); cb9.setChecked(settings.getBoolean("overviewmode", true)); cb10.setChecked(settings.getBoolean("restoreclosed", true)); + cb11.setChecked(settings.getBoolean("hidestatus", false)); r1(r1); r2(r2); @@ -108,6 +114,8 @@ public class AdvancedSettingsActivity extends Activity { r11(r11); r12(r12); r13(r13); + r14(r14); + r15(r15); cb1(cb1); cb2(cb2); cb3(cb3); @@ -118,11 +126,12 @@ public class AdvancedSettingsActivity extends Activity { cb8(cb8); cb9(cb9); cb10(cb10); + cb11(cb11); back(); TextView importBookmarks = (TextView)findViewById(R.id.isImportAvailable); - if(BarebonesActivity.noStockBrowser){ + if(BrowserActivity.noStockBrowser){ importBookmarks.setText(getResources().getString(R.string.stock_browser_unavailable)); } else{ @@ -140,6 +149,9 @@ public class AdvancedSettingsActivity extends Activity { case 1: Utils.showToast(CONTEXT, "History Cleared"); break; + case 2: + Utils.showToast(CONTEXT, "Cookies Cleared"); + break; } super.handleMessage(msg); } @@ -286,6 +298,19 @@ public class AdvancedSettingsActivity extends Activity { }); } + + void cb11(CheckBox view) { + view.setOnCheckedChangeListener(new OnCheckedChangeListener() { + + @Override + public void onCheckedChanged(CompoundButton buttonView, + boolean isChecked) { + edit.putBoolean("hidestatus", isChecked); + edit.commit(); + } + + }); + } void r1(RelativeLayout view) { view.setOnClickListener(new OnClickListener() { @@ -446,20 +471,71 @@ public class AdvancedSettingsActivity extends Activity { @Override public void onClick(View v) { - // TODO Auto-generated method stub cb10.setChecked(!cb10.isChecked()); } }); } + void r14(RelativeLayout view) { + view.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + cb11.setChecked(!cb11.isChecked()); + } + + }); + } + + void r15(RelativeLayout view) { + view.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + AlertDialog.Builder builder = new AlertDialog.Builder( + AdvancedSettingsActivity.this); // dialog + builder.setTitle("Clear Cookies"); + builder.setMessage( + "Would you like to clear all browser cookies?") + .setPositiveButton("Yes", + new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface arg0, + int arg1) { + Thread clear = new Thread( + new Runnable() { + + @Override + public void run() { + clearCookies(); + } + + }); + clear.start(); + } + + }) + .setNegativeButton("No", + new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface arg0, + int arg1) { + + } + + }).show(); + } + + }); + } - @SuppressWarnings("deprecation") public void clearHistory() { CookieManager c = CookieManager.getInstance(); CookieSyncManager.createInstance(this); c.removeAllCookie(); AdvancedSettingsActivity.this.deleteDatabase("historyManager"); - BarebonesActivity.main[0].clearCache(true); WebViewDatabase m = WebViewDatabase .getInstance(AdvancedSettingsActivity.this); m.clearFormData(); @@ -468,7 +544,7 @@ public class AdvancedSettingsActivity extends Activity { m.clearUsernamePassword(); WebIconDatabase.getInstance().removeAllIcons(); } - if (!BarebonesActivity.noStockBrowser) { + if (!BrowserActivity.noStockBrowser) { try { Browser.clearHistory(getContentResolver()); } catch (NullPointerException ignored) { @@ -478,7 +554,12 @@ public class AdvancedSettingsActivity extends Activity { messageHandler.sendEmptyMessage(1); } - + public void clearCookies(){ + CookieManager c = CookieManager.getInstance(); + CookieSyncManager.createInstance(this); + c.removeAllCookie(); + messageHandler.sendEmptyMessage(2); + } void r9(RelativeLayout view) { @@ -559,7 +640,7 @@ public class AdvancedSettingsActivity extends Activity { } public void importFromStockBrowser() { - if (!BarebonesActivity.noStockBrowser) { + if (!BrowserActivity.noStockBrowser) { try { String[] proj = new String[] { Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL }; diff --git a/src/acr/browser/barebones/activities/BrowserActivity.java b/src/acr/browser/barebones/activities/BrowserActivity.java new file mode 100644 index 0000000..d367499 --- /dev/null +++ b/src/acr/browser/barebones/activities/BrowserActivity.java @@ -0,0 +1,2150 @@ +package acr.browser.barebones.activities; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import acr.browser.barebones.R; +import acr.browser.barebones.customwebview.CustomWebView; +import acr.browser.barebones.databases.DatabaseHandler; +import acr.browser.barebones.databases.SpaceTokenizer; +import acr.browser.barebones.utilities.BookmarkPageVariables; +import acr.browser.barebones.utilities.FinalVariables; +import acr.browser.barebones.utilities.HistoryPageVariables; +import acr.browser.barebones.utilities.Utils; +import acr.browser.barebones.webviewclasses.CustomChromeClient; +import acr.browser.barebones.webviewclasses.CustomDownloadListener; +import acr.browser.barebones.webviewclasses.CustomWebViewClient; +import acr.browser.barebones.webviewclasses.WebPageLongClickListener; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.AlertDialog; +import android.content.ClipData; +import android.content.ClipboardManager; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.res.Configuration; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteException; +import android.database.sqlite.SQLiteMisuseException; +import android.graphics.Bitmap; +import android.graphics.Rect; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.provider.Browser; +import android.text.TextUtils; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.Gravity; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.View.OnKeyListener; +import android.view.View.OnLongClickListener; +import android.view.View.OnTouchListener; +import android.view.WindowManager; +import android.view.animation.Animation; +import android.view.animation.Animation.AnimationListener; +import android.view.animation.AnimationUtils; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; +import android.webkit.CookieManager; +import android.webkit.CookieSyncManager; +import android.webkit.ValueCallback; +import android.webkit.WebChromeClient.CustomViewCallback; +import android.webkit.WebIconDatabase; +import android.webkit.WebSettings; +import android.webkit.WebSettings.LayoutAlgorithm; +import android.webkit.WebSettings.PluginState; +import android.webkit.WebSettings.RenderPriority; +import android.webkit.WebView; +import android.webkit.WebView.HitTestResult; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.FrameLayout; +import android.widget.HorizontalScrollView; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.MultiAutoCompleteTextView; +import android.widget.PopupMenu; +import android.widget.PopupMenu.OnMenuItemClickListener; +import android.widget.ProgressBar; +import android.widget.RelativeLayout; +import android.widget.SimpleAdapter; +import android.widget.TextView; +import android.widget.TextView.OnEditorActionListener; +import android.widget.Toast; + +@SuppressWarnings("deprecation") +public class BrowserActivity extends Activity implements OnTouchListener { + + public static void generateHistory(final CustomWebView view, + final Context context) { + + Thread history = new Thread(new Runnable() { + + @Override + public void run() { + String historyHtml = HistoryPageVariables.Heading; + Cursor historyCursor = null; + String[][] h = new String[50][3]; + + try { + SQLiteDatabase s = historyHandler.getReadableDatabase(); + historyCursor = s.query("history", // URI + // of + columns, // Which columns to return + null, // Which rows to return (all rows) + null, // Selection arguments (none) + null, null, null); + + handler.sendEmptyMessage(1); + + } catch (SQLiteException ignored) { + } catch (NullPointerException ignored) { + } catch (IllegalStateException ignored) { + } + + list = new ArrayList>(); + try { + if (historyCursor != null) { + if (historyCursor.moveToLast()) { + // Variable for holding the retrieved URL + urlColumn = historyCursor.getColumnIndex("url"); + titleColumn = historyCursor.getColumnIndex("title"); + // Reference to the the column containing the URL + int n = 0; + do { + + h[n][0] = historyCursor.getString(urlColumn); + h[n][2] = h[n][0].substring(0, + Math.min(100, h[n][0].length())) + + "..."; + h[n][1] = historyCursor.getString(titleColumn); + historyHtml += (HistoryPageVariables.Part1 + + h[n][0] + HistoryPageVariables.Part2 + + h[n][1] + HistoryPageVariables.Part3 + + h[n][2] + HistoryPageVariables.Part4); + n++; + } while (n < 49 && historyCursor.moveToPrevious()); + } + } + } catch (SQLiteException ignored) { + } catch (NullPointerException ignored) { + } catch (IllegalStateException ignored) { + } + + historyHtml += BookmarkPageVariables.End; + File historyWebPage = new File(context.getFilesDir(), + "history.html"); + try { + FileWriter hWriter = new FileWriter(historyWebPage, false); + hWriter.write(historyHtml); + hWriter.close(); + } catch (IOException e) { + e.printStackTrace(); + } + if (uBar.isShown()) { + urlTitle[pageId].setText("History"); + setUrlText(""); + getUrl.setPadding(tenPad, 0, tenPad, 0); + } + + view.loadUrl("file://" + historyWebPage); + } + + }); + history.run(); + } + + public static void setUrlText(String url) { + if (url != null) { + if (!url.startsWith("file://")) { + getUrl.setText(url); + } else { + getUrl.setText(""); + } + } + } + + public static void removeView(WebView view) { + if (!showFullScreen) { + view.startAnimation(fadeOut); + } + background.removeView(view); + uBar.bringToFront(); + } + + private static BrowserActivity ACTIVITY; + + public static void deleteBookmark(String url) { + File book = new File(CONTEXT.getFilesDir(), "bookmarks"); + File bookUrl = new File(CONTEXT.getFilesDir(), "bookurl"); + int n = 0; + try { + BufferedWriter bookWriter = new BufferedWriter(new FileWriter(book)); + BufferedWriter urlWriter = new BufferedWriter(new FileWriter( + bookUrl)); + while (bUrl[n] != null && n < (MAX_BOOKMARKS - 1)) { + if (!bUrl[n].equalsIgnoreCase(url)) { + bookWriter.write(bTitle[n]); + urlWriter.write(bUrl[n]); + bookWriter.newLine(); + urlWriter.newLine(); + } + n++; + } + bookWriter.close(); + urlWriter.close(); + } catch (FileNotFoundException e) { + } catch (IOException e) { + } + for (int p = 0; p < MAX_BOOKMARKS; p++) { + bUrl[p] = null; + bTitle[p] = null; + } + try { + BufferedReader readBook = new BufferedReader(new FileReader(book)); + BufferedReader readUrl = new BufferedReader(new FileReader(bookUrl)); + String t, u; + int z = 0; + while ((t = readBook.readLine()) != null + && (u = readUrl.readLine()) != null && z < MAX_BOOKMARKS) { + bUrl[z] = u; + bTitle[z] = t; + z++; + } + readBook.close(); + readUrl.close(); + } catch (IOException ignored) { + } + openBookmarks(CONTEXT, main[pageId]); + } + + // variables to differentiate free from paid + public static final int MAX_TABS = FinalVariables.MAX_TABS; + public static final int MAX_BOOKMARKS = FinalVariables.MAX_BOOKMARKS; + public static final boolean PAID_VERSION = FinalVariables.PAID_VERSION; + + public static Context CONTEXT; + + public static final String HOMEPAGE = FinalVariables.HOMEPAGE; + public static String SEARCH; + + public static SimpleAdapter adapter; + public static MultiAutoCompleteTextView getUrl; + public static TextView[] urlTitle = new TextView[MAX_TABS]; + public static ProgressBar browserProgress; + public static final CustomWebView[] main = new CustomWebView[MAX_TABS]; + public static Rect bounds; + public static long timeTabPressed; + public static int[] tabOrder = new int[MAX_TABS]; + public static ValueCallback mUploadMessage; + public static ImageView refresh; + public static ProgressBar progressBar; + public static String defaultUser; + public static Drawable webpageOther; + public static Drawable incognitoPage; + public static Drawable exitTab; + public static long loadTime = 0; + public static int number; + public static int pageId = 0; + public static int agentPicker; + public static int enableFlash; + public static int height32; + public static int height; + public static int width; + public static int pixels; + public static int leftPad; + public static int rightPad; + public static final int API = FinalVariables.API; + public static int mShortAnimationDuration; + public static int id; + public static int tenPad; + public static int urlColumn; + public static int titleColumn; + public static int closeWindow; + public static boolean isPhone = false; + public static boolean allowLocation; + public static boolean savePasswords; + public static boolean deleteHistory; + public static boolean saveTabs; + public static boolean showFullScreen; + public static boolean noStockBrowser = true; + public static SharedPreferences settings; + public static SharedPreferences.Editor edit; + public static String desktop; + public static String mobile; + public static String user; + public static String urlA; + public static String title; + public static String[] memoryURL = new String[MAX_TABS]; + public static String[] bUrl = new String[MAX_BOOKMARKS]; + public static String[] bTitle = new String[MAX_BOOKMARKS]; + public static String[] columns; + public static String homepage; + public static final String preferences = "settings"; + + public static String[][] urlToLoad = new String[MAX_TABS][2]; + public static FrameLayout background; + public static RelativeLayout uBar; + public static HorizontalScrollView tabScroll; + public static Animation slideUp; + public static Animation slideDown; + public static Animation fadeOut; + public static Animation fadeIn; + + public static CookieManager cookieManager; + + public static Uri bookmarks; + public static List> list; + public static Map map; + + public static Handler handler, browserHandler; + + public static DatabaseHandler historyHandler; + + public static StringBuilder sb; + + public static Runnable update; + + public static SQLiteDatabase s; + + public static Drawable inactive; + + public static Drawable active; + + public static LinearLayout tabLayout; + + public static String[] GetArray(String input) { + return input.split("\\|\\$\\|SEPARATOR\\|\\$\\|"); + } + + @SuppressWarnings("unused") + public static void setFavicon(int id, Bitmap favicon) { + Drawable icon = null; + icon = new BitmapDrawable(null, favicon); + icon.setBounds(0, 0, width / 2, height / 2); + if (icon != null) { + urlTitle[id].setCompoundDrawables(icon, null, exitTab, null); + } else { + urlTitle[id] + .setCompoundDrawables(webpageOther, null, exitTab, null); + } + icon = null; + + } + + @SuppressLint("SetJavaScriptEnabled") + public static void browserSettings(Context context, CustomWebView view) { + WebSettings webViewSettings = view.getSettings(); + if (settings.getBoolean("java", true)) { + webViewSettings.setJavaScriptEnabled(true); + webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true); + } + + if (API < 14) { + switch (settings.getInt("textsize", 3)) { + case 1: + webViewSettings.setTextSize(WebSettings.TextSize.LARGEST); + break; + case 2: + webViewSettings.setTextSize(WebSettings.TextSize.LARGER); + break; + case 3: + webViewSettings.setTextSize(WebSettings.TextSize.NORMAL); + break; + case 4: + webViewSettings.setTextSize(WebSettings.TextSize.SMALLER); + break; + case 5: + webViewSettings.setTextSize(WebSettings.TextSize.SMALLEST); + break; + } + + } else { + switch (settings.getInt("textsize", 3)) { + case 1: + webViewSettings.setTextZoom(200); + break; + case 2: + webViewSettings.setTextZoom(150); + break; + case 3: + webViewSettings.setTextZoom(100); + break; + case 4: + webViewSettings.setTextZoom(75); + break; + case 5: + webViewSettings.setTextZoom(50); + break; + } + } + webViewSettings.setSupportMultipleWindows(settings.getBoolean( + "newwindow", true)); + + switch (settings.getInt("enableflash", 0)) { + case 0: + break; + case 1: { + webViewSettings.setPluginState(PluginState.ON_DEMAND); + break; + } + case 2: { + webViewSettings.setPluginState(PluginState.ON); + break; + } + default: + break; + } + if (settings.getBoolean("passwords", false)) { + if (API < 18) { + webViewSettings.setSavePassword(true); + } + webViewSettings.setSaveFormData(true); + } + if (API < 18) { + try { + webViewSettings.setRenderPriority(RenderPriority.HIGH); + } catch (SecurityException ignored) { + + } + } + webViewSettings.setGeolocationEnabled(settings.getBoolean("location", + false)); + webViewSettings.setGeolocationDatabasePath(context.getFilesDir() + .getAbsolutePath()); + webViewSettings.setUseWideViewPort(settings.getBoolean("wideviewport", + true)); + webViewSettings.setLoadWithOverviewMode(settings.getBoolean( + "overviewmode", true)); + + if (settings.getBoolean("textreflow", false)) { + webViewSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); + } else { + webViewSettings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL); + } + + webViewSettings.setBlockNetworkImage(settings.getBoolean("blockimages", + false)); + webViewSettings.setLoadsImagesAutomatically(true); + + } + + void deleteTab(final int del) { + if (API >= 11) { + main[del].onPause(); + } + main[del].stopLoading(); + main[del].clearHistory(); + edit.putString("oldPage", urlToLoad[del][0]); + edit.commit(); + urlToLoad[del][0] = null; + urlToLoad[del][1] = null; + if (API < 16) { + urlTitle[del].setBackgroundDrawable(active); + } else { + urlTitle[del].setBackground(active); + } + + urlTitle[del].setPadding(leftPad, 0, rightPad, 0); + Animation yolo = AnimationUtils.loadAnimation(this, R.anim.down); + yolo.setAnimationListener(new AnimationListener() { + + @Override + public void onAnimationEnd(Animation animation) { + urlTitle[del].setVisibility(View.GONE); + findNewView(del); + main[del] = null; + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + + @Override + public void onAnimationStart(Animation animation) { + } + + }); + urlTitle[del].startAnimation(yolo); + uBar.bringToFront(); + } + + void findNewView(int id) { + int leftId = id; + boolean right = false, left = false; + if (id == pageId) { + + if (main[id].isShown()) { + // background.removeView(main[id]); + removeView(main[id]); + } + for (; id <= (number - 1); id++) { + if (urlTitle[id].isShown()) { + background.addView(main[id]); + main[id].setVisibility(View.VISIBLE); + uBar.bringToFront(); + if (API < 16) { + urlTitle[id].setBackgroundDrawable(active); + } else { + urlTitle[id].setBackground(active); + } + urlTitle[id].setPadding(leftPad, 0, rightPad, 0); + pageId = id; + setUrlText(urlToLoad[pageId][0]); + getUrl.setPadding(tenPad, 0, tenPad, 0); + right = true; + if (main[id].getProgress() < 100) { + onProgressChanged(id, main[id].getProgress()); + refresh.setVisibility(View.INVISIBLE); + progressBar.setVisibility(View.VISIBLE); + } else { + onProgressChanged(id, main[id].getProgress()); + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + } + break; + } + + } + if (!right) { + for (; leftId >= 0; leftId--) { + + if (urlTitle[leftId].isShown()) { + background.addView(main[leftId]); + main[leftId].setVisibility(View.VISIBLE); + // uBar.bringToFront(); + if (API < 16) { + urlTitle[leftId].setBackgroundDrawable(active); + } else { + urlTitle[leftId].setBackground(active); + } + urlTitle[leftId].setPadding(leftPad, 0, rightPad, 0); + pageId = leftId; + 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); + onProgressChanged(leftId, main[leftId].getProgress()); + } else { + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + onProgressChanged(leftId, main[leftId].getProgress()); + } + break; + } + + } + + } + + } else { + right = left = true; + } + + if (!(right || left)) { + finish(); + } + uBar.bringToFront(); + tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); + } + + @Override + public void onLowMemory() { + for (int n = 0; n < MAX_TABS; n++) { + if (n != pageId && main[n] != null) { + main[n].freeMemory(); + } + } + super.onLowMemory(); + } + + void enter() { + getUrl.setOnKeyListener(new OnKeyListener() { + + @Override + public boolean onKey(View arg0, int arg1, KeyEvent arg2) { + + switch (arg1) { + case KeyEvent.KEYCODE_ENTER: + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(getUrl.getWindowToken(), 0); + searchTheWeb(getUrl.getText().toString(), CONTEXT); + return true; + default: + break; + } + return false; + } + + }); + getUrl.setOnEditorActionListener(new OnEditorActionListener() { + + @Override + public boolean onEditorAction(TextView arg0, int actionId, + KeyEvent arg2) { + if (actionId == EditorInfo.IME_ACTION_GO + || actionId == EditorInfo.IME_ACTION_DONE + || actionId == EditorInfo.IME_ACTION_NEXT + || actionId == EditorInfo.IME_ACTION_SEND + || actionId == EditorInfo.IME_ACTION_SEARCH + || (arg2.getAction() == KeyEvent.KEYCODE_ENTER)) { + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(getUrl.getWindowToken(), 0); + searchTheWeb(getUrl.getText().toString(), CONTEXT); + return true; + } + return false; + } + + }); + } + + @SuppressLint("HandlerLeak") + void enterUrl() { + getUrl = (MultiAutoCompleteTextView) findViewById(R.id.enterUrl); + getUrl.setPadding(tenPad, 0, tenPad, 0); + getUrl.setTextColor(getResources().getColor(android.R.color.black)); + getUrl.setPadding(tenPad, 0, tenPad, 0); + getUrl.setBackgroundResource(R.drawable.book); + getUrl.setPadding(tenPad, 0, tenPad, 0); + handler = new Handler() { + + @Override + public void handleMessage(Message msg) { + + switch (msg.what) { + case 1: { + adapter = new SimpleAdapter(CONTEXT, list, + R.layout.two_line_autocomplete, new String[] { + "title", "url" }, new int[] { R.id.title, + R.id.url }); + + getUrl.setAdapter(adapter); + + break; + } + case 2: { + + break; + } + } + } + }; + + Thread updateAutoComplete = new Thread(new Runnable() { + + @Override + public void run() { + + Cursor c = null; + Cursor managedCursor = null; + columns = new String[] { "url", "title" }; + try { + + bookmarks = Browser.BOOKMARKS_URI; + c = getContentResolver().query(bookmarks, columns, null, + null, null); + } catch (SQLiteException ignored) { + } catch (IllegalStateException ignored) { + } catch (NullPointerException ignored) { + } + + if (c != null) { + noStockBrowser = false; + Log.i("Browser", "detected AOSP browser"); + } else { + noStockBrowser = true; + Log.e("Browser", "did not detect AOSP browser"); + } + if (c != null) { + c.close(); + } + try { + + managedCursor = null; + SQLiteDatabase s = historyHandler.getReadableDatabase(); + managedCursor = s.query("history", // URI + // of + columns, // Which columns to return + null, // Which rows to return (all rows) + null, // Selection arguments (none) + null, null, null); + + } catch (SQLiteException ignored) { + } catch (NullPointerException ignored) { + } catch (IllegalStateException ignored) { + } + + list = new ArrayList>(); + try { + if (managedCursor != null) { + + if (managedCursor.moveToLast()) { + + // Variable for holding the retrieved URL + + urlColumn = managedCursor.getColumnIndex("url"); + titleColumn = managedCursor.getColumnIndex("title"); + // Reference to the the column containing the URL + do { + urlA = managedCursor.getString(urlColumn); + title = managedCursor.getString(titleColumn); + map = new HashMap(); + map.put("title", title); + map.put("url", urlA); + list.add(map); + } while (managedCursor.moveToPrevious()); + } + } + handler.sendEmptyMessage(1); + } catch (SQLiteException ignored) { + } catch (NullPointerException ignored) { + } catch (IllegalStateException ignored) { + } + managedCursor.close(); + } + + }); + try { + updateAutoComplete.start(); + } catch (NullPointerException ignored) { + } catch (SQLiteMisuseException ignored) { + } catch (IllegalStateException ignored) { + } + + getUrl.setThreshold(1); + getUrl.setTokenizer(new SpaceTokenizer()); + getUrl.setOnItemClickListener(new OnItemClickListener() { + + @Override + public void onItemClick(AdapterView arg0, View arg1, int arg2, + long arg3) { + try { + String url; + url = ((TextView) arg1.findViewById(R.id.url)).getText() + .toString(); + getUrl.setText(url); + searchTheWeb(url, CONTEXT); + url = null; + getUrl.setPadding(tenPad, 0, tenPad, 0); + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(getUrl.getWindowToken(), 0); + } catch (NullPointerException e) { + Log.e("Browser Error: ", + "NullPointerException on item click"); + } + } + + }); + + getUrl.setSelectAllOnFocus(true); // allows edittext to select all when + // clicked + } + + void back() { + ImageView exit = (ImageView) findViewById(R.id.exit); + exit.setBackgroundResource(R.drawable.button); + if (isPhone) { + RelativeLayout relativeLayout1 = (RelativeLayout) findViewById(R.id.relativeLayout1); + relativeLayout1.removeView(exit); + } + exit.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + + if (main[pageId].canGoBack()) { + main[pageId].goBack(); + } else { + deleteTab(pageId); + } + + } + + }); + exit.setOnLongClickListener(new OnLongClickListener() { + + @Override + public boolean onLongClick(View v) { + finish(); + return true; + } + + }); + + } + + @Override + public void finish() { + background.clearDisappearingChildren(); + tabScroll.clearDisappearingChildren(); + if (settings.getBoolean("cache", false)) { + main[pageId].clearCache(true); + Log.i("Lightning", "Cache Cleared"); + } + super.finish(); + } + + void forward() { + ImageView forward = (ImageView) findViewById(R.id.forward); + forward.setBackgroundResource(R.drawable.button); + if (isPhone) { + RelativeLayout relativeLayout1 = (RelativeLayout) findViewById(R.id.relativeLayout1); + relativeLayout1.removeView(forward); + } + forward.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + if (main[pageId].canGoForward()) { + main[pageId].goForward(); + } + } + + }); + } + + static void goBookmarks(Context context, CustomWebView view) { + File book = new File(context.getFilesDir(), "bookmarks"); + File bookUrl = new File(context.getFilesDir(), "bookurl"); + try { + BufferedReader readBook = new BufferedReader(new FileReader(book)); + BufferedReader readUrl = new BufferedReader(new FileReader(bookUrl)); + String t, u; + int n = 0; + while ((t = readBook.readLine()) != null + && (u = readUrl.readLine()) != null && n < MAX_BOOKMARKS) { + bUrl[n] = u; + bTitle[n] = t; + + n++; + } + readBook.close(); + readUrl.close(); + } catch (FileNotFoundException ignored) { + } catch (IOException ignored) { + } + openBookmarks(context, view); + } + + @SuppressLint("InlinedApi") + private void initialize() { + + DisplayMetrics metrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(metrics); + historyHandler = new DatabaseHandler(this); + cookieManager = CookieManager.getInstance(); + CookieSyncManager.createInstance(CONTEXT); + cookieManager.setAcceptCookie(settings.getBoolean("cookies", true)); + + progressBar = (ProgressBar) findViewById(R.id.progressBar1); + browserProgress = (ProgressBar) findViewById(R.id.progressBar); + browserProgress.setVisibility(View.GONE); + + if (API >= 11) { + progressBar.setIndeterminateDrawable(getResources().getDrawable( + R.drawable.ics_animation)); + } else { + progressBar.setIndeterminateDrawable(getResources().getDrawable( + R.drawable.ginger_animation)); + } + + showFullScreen = settings.getBoolean("fullscreen", false); + uBar = (RelativeLayout) findViewById(R.id.urlBar); + RelativeLayout bg = (RelativeLayout) findViewById(R.id.background); + slideUp = AnimationUtils.loadAnimation(this, R.anim.slide_up); + slideDown = AnimationUtils.loadAnimation(this, R.anim.slide_down); + fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out); + fadeOut.setDuration(250); + fadeIn = AnimationUtils.loadAnimation(this, android.R.anim.fade_in); + // mShortAnimationDuration = getResources().getInteger( + // android.R.integer.config_mediumAnimTime); + mShortAnimationDuration = 250; + slideUp.setAnimationListener(new AnimationListener() { + + @Override + public void onAnimationEnd(Animation arg0) { + + uBar.setVisibility(View.GONE); + } + + @Override + public void onAnimationRepeat(Animation arg0) { + + } + + @Override + public void onAnimationStart(Animation arg0) { + + } + + }); + slideDown.setAnimationListener(new AnimationListener() { + + @Override + public void onAnimationEnd(Animation animation) { + + } + + @Override + public void onAnimationRepeat(Animation animation) { + + } + + @Override + public void onAnimationStart(Animation animation) { + + uBar.setVisibility(View.VISIBLE); + } + + }); + + RelativeLayout refreshLayout = (RelativeLayout) findViewById(R.id.refreshLayout); + refreshLayout.setBackgroundResource(R.drawable.button); + + // user agent + if (API < 17) { + user = new WebView(CONTEXT).getSettings().getUserAgentString(); + } else { + user = WebSettings.getDefaultUserAgent(this); + } + + background = (FrameLayout) findViewById(R.id.holder); + defaultUser = user; // setting mobile user + // agent + mobile = FinalVariables.MOBILE_USER_AGENT; + desktop = FinalVariables.DESKTOP_USER_AGENT; // setting + // desktop user agent + + switch (settings.getInt("search", 1)) { + case 1: + SEARCH = FinalVariables.GOOGLE_SEARCH; + break; + case 2: + SEARCH = FinalVariables.BING_SEARCH; + break; + case 3: + SEARCH = FinalVariables.YAHOO_SEARCH; + break; + case 4: + SEARCH = FinalVariables.STARTPAGE_SEARCH; + break; + case 5: + SEARCH = FinalVariables.DUCK_SEARCH; + break; + case 6: + SEARCH = FinalVariables.BAIDU_SEARCH; + break; + case 7: + SEARCH = FinalVariables.YANDEX_SEARCH; + break; + } + + exitTab = getResources().getDrawable(R.drawable.stop); // user + // agent + homepage = settings.getString("home", HOMEPAGE); // initializing + // the + // stored + // homepage + // variable + allowLocation = settings.getBoolean("location", false); // initializing + // location + // variable + savePasswords = settings.getBoolean("passwords", false); // initializing + // save + // passwords + // variable + enableFlash = settings.getInt("enableflash", 0); // enable flash + // boolean + agentPicker = settings.getInt("agentchoose", 1); // which user agent to + // use, 1=mobile, + // 2=desktop, + // 3=custom + + deleteHistory = settings.getBoolean("history", false); // delete history + // on exit + // boolean + // initializing variables declared + + height = getResources().getDrawable(R.drawable.loading) + .getMinimumHeight(); + width = getResources().getDrawable(R.drawable.loading) + .getMinimumWidth(); + + // hides keyboard so it doesn't default pop up + this.getWindow().setSoftInputMode( + WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); + + // opens icondatabase so that favicons can be stored + WebIconDatabase.getInstance().open( + getDir("icons", MODE_PRIVATE).getPath()); + + // scroll view containing tabs + tabLayout = (LinearLayout) findViewById(R.id.tabLayout); + tabScroll = (HorizontalScrollView) findViewById(R.id.tabScroll); + tabScroll.setBackgroundColor(getResources().getColor(R.color.black)); + tabScroll.setHorizontalScrollBarEnabled(false); + if (API > 8) { + tabScroll.setOverScrollMode(View.OVER_SCROLL_NEVER); // disallow + // overscroll + } + + // image dimensions and initialization + final int dps = 175; + final float scale = getApplicationContext().getResources() + .getDisplayMetrics().density; + pixels = (int) (dps * scale + 0.5f); + leftPad = (int) (17 * scale + 0.5f); + rightPad = (int) (15 * scale + 0.5f); + height32 = (int) (32 * scale + 0.5f); + 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); + incognitoPage.setBounds(0, 0, width / 2, height / 2); + exitTab.setBounds(0, 0, width * 2 / 3, height * 2 / 3); + + Thread startup = new Thread(new Runnable() { + + @Override + public void run() { + reopenOldTabs(); // restores old tabs or creates a new one + } + + }); + startup.run(); + + // new tab button + ImageView newTab = (ImageView) findViewById(R.id.newTab); + newTab.setBackgroundResource(R.drawable.button); + newTab.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + newTab(number, homepage, true); + tabScroll.postDelayed(new Runnable() { + @Override + public void run() { + tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); + } + }, 100L); + + } + }); + newTab.setOnLongClickListener(new OnLongClickListener() { + + @Override + public boolean onLongClick(View v) { + if (settings.getString("oldPage", "").length() > 0) { + newTab(number, settings.getString("oldPage", ""), true); + edit.putString("oldPage", ""); + edit.commit(); + tabScroll.postDelayed(new Runnable() { + @Override + public void run() { + tabScroll.smoothScrollTo( + urlTitle[pageId].getLeft(), 0); + } + }, 100L); + } + return true; + } + + }); + refresh = (ImageView) findViewById(R.id.refresh); + refreshLayout.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View arg0) { + + if (main[pageId].getProgress() < 100) { + main[pageId].stopLoading(); + } else { + main[pageId].reload(); + } + } + + }); + + enterUrl(); + if (showFullScreen) { + bg.removeView(uBar); + background.addView(uBar); + } + browserHandler = new Handle(); + + } + + static class Handle extends Handler { + + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case 1: { + main[pageId].loadUrl(getUrl.getText().toString()); + break; + } + case 2: { + // deleteTab(msg.arg1); + break; + } + case 3: { + main[pageId].invalidate(); + break; + } + } + super.handleMessage(msg); + } + + } + + void reopenOldTabs() { + Intent url = getIntent(); + String URL = url.getDataString(); + boolean oldTabs = false; + + if (saveTabs) { + if (URL != null) { + // opens a new tab with the url if its there + newTab(number, URL, true); + main[number - 1].resumeTimers(); + oldTabs = true; + + } + for (String aMemoryURL : memoryURL) { + if (aMemoryURL.length() > 0) { + if (number == 0) { + newTab(number, "", !oldTabs); + main[pageId].resumeTimers(); + main[pageId].getSettings().setCacheMode( + WebSettings.LOAD_CACHE_ELSE_NETWORK); + main[pageId].loadUrl(aMemoryURL); + } else { + newTab(number, "", false); + main[number - 1].getSettings().setCacheMode( + WebSettings.LOAD_CACHE_ELSE_NETWORK); + main[number - 1].loadUrl(aMemoryURL); + } + oldTabs = true; + } + + } + + if (!oldTabs) { + newTab(number, homepage, true); + main[number - 1].resumeTimers(); + } + } else { + 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 home-page + newTab(number, homepage, true); + main[number - 1].resumeTimers(); + + } + } + } + + public static CustomWebView makeTab(final int pageToView, String Url, + final boolean display) { + CustomWebView view = new CustomWebView(CONTEXT); + view.setId(pageToView); + allowLocation = settings.getBoolean("location", false); + browserSettings(CONTEXT, view); + view.setWebViewClient(new CustomWebViewClient(ACTIVITY)); + view.setWebChromeClient(new CustomChromeClient(ACTIVITY)); + if (API > 8) { + view.setDownloadListener(new CustomDownloadListener(ACTIVITY)); + } + + view.setOnLongClickListener(new WebPageLongClickListener()); + + agentPicker = settings.getInt("agentchoose", 1); + switch (agentPicker) { + case 1: + view.getSettings().setUserAgentString(defaultUser); + break; + case 2: + view.getSettings().setUserAgentString(desktop); + break; + case 3: + view.getSettings().setUserAgentString(mobile); + break; + case 4: + view.getSettings().setUserAgentString( + settings.getString("userAgentString", defaultUser)); + break; + } + if (display) { + background.removeView(main[pageId]); + background.addView(view); + view.requestFocus(); + pageId = pageToView; + } + uBar.bringToFront(); + if (Url.contains("about:home")) { + goBookmarks(CONTEXT, view); + } else if (Url.contains("about:blank")) { + view.loadUrl(""); + } else { + if (!Url.startsWith("http") && Url != "") { + Url = "http://" + Url; + } + view.loadUrl(Url); + + } + Log.i("Browser", "tab complete"); + return view; + } + + private void newSettings() { + startActivity(new Intent(FinalVariables.SETTINGS_INTENT)); + } + + // new tab method, takes the id of the tab to be created and the url to load + public static int newTab(int theId, final String theUrl, + final boolean display) { + Log.i("Browser", "making tab"); + int finalID = 0; + homepage = settings.getString("home", HOMEPAGE); + allowLocation = settings.getBoolean("location", false); + boolean reuseWebView = false; + + for (int num = 0; num < number; num++) { + if (urlTitle[num].getVisibility() == View.GONE) { + final int n = num; + Animation holo = AnimationUtils.loadAnimation(CONTEXT, + R.anim.up); + holo.setAnimationListener(new AnimationListener() { + + @Override + public void onAnimationEnd(Animation animation) { + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + + @Override + public void onAnimationStart(Animation animation) { + urlTitle[n].setVisibility(View.VISIBLE); + } + + }); + urlTitle[n].startAnimation(holo); + urlTitle[num].setText("New Tab"); + + if (display) { + if (API < 16) { + urlTitle[num].setBackgroundDrawable(active); + } else { + urlTitle[num].setBackground(active); + } + } else { + if (API < 16) { + urlTitle[num].setBackgroundDrawable(inactive); + } else { + urlTitle[num].setBackground(inactive); + } + } + urlTitle[num].setPadding(leftPad, 0, rightPad, 0); + if (display) { + if (API < 16) { + urlTitle[pageId].setBackgroundDrawable(inactive); + } else { + urlTitle[pageId].setBackground(inactive); + } + } + urlTitle[num].setCompoundDrawables(webpageOther, null, exitTab, + null); + urlTitle[num].setPadding(leftPad, 0, rightPad, 0); + urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); + + main[num] = makeTab(num, theUrl, display); + finalID = num; + pageId = num; + + uBar.bringToFront(); + + if (API >= 11) { + main[num].onResume(); + } + + reuseWebView = true; + break; + } + } + if (!reuseWebView) { + if (number < MAX_TABS) { + if (number > 0) { + if (display) { + if (API < 16) { + urlTitle[pageId].setBackgroundDrawable(inactive); + } else { + urlTitle[pageId].setBackground(inactive); + } + + urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); + } + } + final TextView title = new TextView(CONTEXT); + title.setText("New Tab"); + if (display) { + if (API < 16) { + title.setBackgroundDrawable(active); + } else { + title.setBackground(active); + } + } else { + if (API < 16) { + title.setBackgroundDrawable(inactive); + } else { + title.setBackground(inactive); + } + } + title.setSingleLine(true); + title.setGravity(Gravity.CENTER_VERTICAL); + title.setHeight(height32); + title.setWidth(pixels); + title.setPadding(leftPad, 0, rightPad, 0); + title.setId(number); + title.setGravity(Gravity.CENTER_VERTICAL); + + title.setCompoundDrawables(webpageOther, null, exitTab, null); + + Drawable[] drawables = title.getCompoundDrawables(); + bounds = drawables[2].getBounds(); + title.setOnTouchListener(ACTIVITY); + Animation holo = AnimationUtils.loadAnimation(CONTEXT, + R.anim.up); + tabLayout.addView(title); + title.setVisibility(View.INVISIBLE); + holo.setAnimationListener(new AnimationListener() { + + @Override + public void onAnimationEnd(Animation animation) { + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + + @Override + public void onAnimationStart(Animation animation) { + title.setVisibility(View.VISIBLE); + } + + }); + title.startAnimation(holo); + urlTitle[number] = title; + + urlTitle[number].setText("New Tab"); + + if (theUrl != null) { + main[number] = makeTab(number, theUrl, display); + } else { + main[number] = makeTab(number, homepage, display); + } + finalID = number; + number = number + 1; + } + } + if (!reuseWebView && number >= MAX_TABS) { + Toast.makeText(CONTEXT, "Maximum number of tabs reached...", + Toast.LENGTH_SHORT).show(); + } + return finalID; + + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, + Intent intent) { + if (requestCode == 1) { + if (null == mUploadMessage) + return; + Uri result = intent == null || resultCode != RESULT_OK ? null + : intent.getData(); + mUploadMessage.onReceiveValue(result); + mUploadMessage = null; + + } + } + + @Override + public void onBackPressed() { + try { + if (showFullScreen && !uBar.isShown()) { + uBar.startAnimation(slideDown); + } + if (main[pageId].isShown() && main[pageId].canGoBack()) { + main[pageId].goBack(); + } else { + deleteTab(pageId); + uBar.bringToFront(); + } + } catch (NullPointerException ignored) { + } + return; + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + if (settings.getBoolean("textreflow", false)) { + main[pageId].getSettings().setLayoutAlgorithm( + LayoutAlgorithm.NARROW_COLUMNS); + } else { + main[pageId].getSettings().setLayoutAlgorithm( + LayoutAlgorithm.NORMAL); + } + + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); // displays main xml layout + CONTEXT = this; + ACTIVITY = this; + settings = getSharedPreferences(preferences, 0); + edit = settings.edit(); + + if (settings.getBoolean("hidestatus", false)) { + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + saveTabs = settings.getBoolean("savetabs", true); + if (saveTabs) { + String mem = settings.getString("memory", ""); + edit.putString("memory", ""); + memoryURL = GetArray(mem); + } + + inactive = getResources().getDrawable(R.drawable.bg_inactive); + active = getResources().getDrawable(R.drawable.bg_press); + initialize(); // sets up random stuff + options(); // allows options to be opened + enter();// enter url bar + DisplayMetrics metrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(metrics); + + float widthInInches = metrics.widthPixels / metrics.xdpi; + float heightInInches = metrics.heightPixels / metrics.ydpi; + double sizeInInches = Math.sqrt(Math.pow(widthInInches, 2) + + Math.pow(heightInInches, 2)); + // 0.5" buffer for 7" devices + isPhone = sizeInInches < 6.5; + forward();// forward button + back(); + if (settings.getInt("first", 0) == 0) { // This dialog alerts the user + // to some navigation + // techniques + String message = "1. Long-press back button to exit browser\n\n" + + "2. Swipe from left edge toward the right (---->) to go back\n\n" + + "3. Swipe from right edge toward the left (<----)to go forward\n\n" + + "4. Visit settings and advanced settings to change options"; + + Utils.createInformativeDialog(CONTEXT, "Browser Tips", message); + String sorry = "I have changed back to the old icon because it has been" + + " brought to my attention that another app had a very similar icon to the new one." + + " I apologize if you liked the new one."; + Utils.createInformativeDialog(CONTEXT, "New Icon", sorry); + edit.putInt("first", 1); + edit.commit(); + } + + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.menu, menu); + + return true; + } + + /* + * (non-Javadoc) + * + * @see android.app.Activity#onKeyDown(int, android.view.KeyEvent) + */ + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_SEARCH) { + getUrl.requestFocus(); + InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + manager.showSoftInput(getUrl, 0); + } + return super.onKeyDown(keyCode, event); + } + + @Override + public boolean onKeyLongPress(int keyCode, KeyEvent event) { + + if (keyCode == KeyEvent.KEYCODE_BACK) { + if (!settings.getBoolean("restoreclosed", true)) { + for (int n = 0; n < MAX_TABS; n++) { + urlToLoad[n][0] = null; + } + } + finish(); + return true; + } else + return super.onKeyLongPress(keyCode, event); + } + + @Override + protected void onNewIntent(Intent intent) { + + String url = intent.getDataString(); + int id = -1; + int download = -1; + try { + id = intent.getExtras().getInt("acr.browser.barebones.Origin") - 1; + } catch (NullPointerException e) { + id = -1; + } + try { + download = intent.getExtras().getInt( + "acr.browser.barebones.Download"); + } catch (NullPointerException e) { + download = -1; + } + if (id >= 0) { + main[id].loadUrl(url); + } else if (download == 1) { + Utils.downloadFile(CONTEXT, url, null, null); + } else if (url != null) { + newTab(number, url, true); + } + + super.onNewIntent(intent); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + switch (item.getItemId()) { + case R.id.history: + generateHistory(main[pageId], CONTEXT); + return true; + case R.id.bookmark: + if (urlToLoad[pageId][1] != null) { + if (!urlToLoad[pageId][1].equals("Bookmarks")) { + Utils.addBookmark(CONTEXT, urlToLoad[pageId][1], + urlToLoad[pageId][0]); + } + } + return true; + case R.id.settings: + newSettings(); + return true; + case R.id.allBookmarks: + if (urlToLoad[pageId][1] == null) { + goBookmarks(CONTEXT, main[pageId]); + } else if (!urlToLoad[pageId][1].equals("Bookmarks")) { + goBookmarks(CONTEXT, main[pageId]); + } + + return true; + case R.id.share: + share(); + return true; + case R.id.incognito: + startActivity(new Intent(FinalVariables.INCOGNITO_INTENT)); + // newTab(number, homepage, true, true); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + @Override + protected void onPause() { + + if (main[pageId] != null) { + if (API >= 11) { + main[pageId].onPause(); + } + main[pageId].pauseTimers(); + } + Thread remember = new Thread(new Runnable() { + + @Override + public void run() { + String s = ""; + for (int n = 0; n < MAX_TABS; n++) { + if (urlToLoad[n][0] != null) { + s = s + urlToLoad[n][0] + "|$|SEPARATOR|$|"; + } + } + edit.putString("memory", s); + edit.commit(); + } + }); + remember.start(); + super.onPause(); + } + + @Override + protected void onResume() { + onProgressChanged(pageId, main[pageId].getProgress()); + if (main[pageId].getProgress() == 100) { + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + + } + if (API >= 11) { + main[pageId].onResume(); + } + main[pageId].resumeTimers(); + super.onResume(); + } + + static void openBookmarks(Context context, CustomWebView view) { + String bookmarkHtml = BookmarkPageVariables.Heading; + + for (int n = 0; n < MAX_BOOKMARKS; n++) { + if (bUrl[n] != null) { + bookmarkHtml += (BookmarkPageVariables.Part1 + bUrl[n] + + BookmarkPageVariables.Part2 + bUrl[n] + + BookmarkPageVariables.Part3 + bTitle[n] + BookmarkPageVariables.Part4); + } + } + bookmarkHtml += BookmarkPageVariables.End; + File bookmarkWebPage = new File(context.getFilesDir(), "bookmarks.html"); + try { + FileWriter bookWriter = new FileWriter(bookmarkWebPage, false); + bookWriter.write(bookmarkHtml); + bookWriter.close(); + } catch (IOException e) { + e.printStackTrace(); + } + view.loadUrl("file://" + bookmarkWebPage); + + if (uBar.isShown()) { + urlTitle[pageId].setText("Bookmarks"); + setUrlText(""); + getUrl.setPadding(tenPad, 0, tenPad, 0); + } + + } + + void options() { + ImageView options = (ImageView) findViewById(R.id.options); + options.setBackgroundResource(R.drawable.button); + options.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + + if (API >= 11) { + PopupMenu menu = new PopupMenu(CONTEXT, v); + MenuInflater inflate = menu.getMenuInflater(); + inflate.inflate(R.menu.menu, menu.getMenu()); + menu.setOnMenuItemClickListener(new OnMenuItemClickListener() { + + @Override + public boolean onMenuItemClick(MenuItem item) { + + switch (item.getItemId()) { + case R.id.history: + generateHistory(main[pageId], CONTEXT); + return true; + case R.id.bookmark: + if (urlToLoad[pageId][1] != null) { + if (!urlToLoad[pageId][1] + .equals("Bookmarks")) { + Utils.addBookmark(CONTEXT, + urlToLoad[pageId][1], + urlToLoad[pageId][0]); + } + } + return true; + case R.id.settings: + newSettings(); + return true; + case R.id.allBookmarks: + if (urlToLoad[pageId][1] == null) { + goBookmarks(CONTEXT, main[pageId]); + } else if (!urlToLoad[pageId][1] + .equals("Bookmarks")) { + goBookmarks(CONTEXT, main[pageId]); + } + return true; + case R.id.share: + share(); + return true; + case R.id.incognito: + startActivity(new Intent( + FinalVariables.INCOGNITO_INTENT)); + // newTab(number, homepage, true, true); + return true; + default: + return false; + } + + } + + }); + menu.show(); + } else if (API < 11) { + + openOptionsMenu(); + } + } + + }); + options.setOnLongClickListener(new OnLongClickListener() { + + @Override + public boolean onLongClick(View arg0) { + return true; + } + + }); + } + + static 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 + CONTEXT.startActivity(Intent.createChooser(shareIntent, + "Share this page")); + } + + static void searchTheWeb(String query, Context context) { + query = query.trim(); + main[pageId].stopLoading(); + + if (query.startsWith("www.")) { + query = "http://" + query; + } else if (query.startsWith("ftp.")) { + query = "ftp://" + query; + } + + boolean containsPeriod = query.contains("."); + boolean isIPAddress = (TextUtils.isDigitsOnly(query.replace(".", "")) && (query + .replace(".", "").length() >= 4)); + boolean aboutScheme = query.contains("about:"); + boolean validURL = (query.startsWith("ftp://") + || query.startsWith("http://") || query.startsWith("file://") || query + .startsWith("https://")) || isIPAddress; + boolean isSearch = ((query.contains(" ") || !containsPeriod) && !aboutScheme); + + if (query.contains("about:home") || query.contains("about:bookmarks")) { + goBookmarks(context, main[pageId]); + } else if (query.contains("about:history")) { + generateHistory(main[pageId], context); + } else if (isSearch) { + query.replaceAll(" ", "+"); + main[pageId].loadUrl(SEARCH + query); + } else if (!validURL) { + main[pageId].loadUrl("http://" + query); + } else { + main[pageId].loadUrl(query); + } + } + + public static void onPageFinished(WebView view, String url) { + if (view.isShown()) { + view.invalidate(); + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + + if (showFullScreen && uBar.isShown()) { + uBar.startAnimation(slideUp); + } + } + view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); + Log.i("Lightning", "Page Finished"); + loadTime = System.currentTimeMillis() - loadTime; + Log.i("Lightning", "Load Time: " + loadTime); + } + + public static void onPageStarted(WebView view, String url, Bitmap favicon) { + Log.i("Lightning", "Page Started"); + loadTime = System.currentTimeMillis(); + int numberPage = view.getId(); + + if (url.startsWith("file://")) { + view.getSettings().setUseWideViewPort(false); + } else { + view.getSettings().setUseWideViewPort( + settings.getBoolean("wideviewport", true)); + } + + if (view.isShown()) { + refresh.setVisibility(View.INVISIBLE); + progressBar.setVisibility(View.VISIBLE); + setUrlText(url); + } + + urlTitle[numberPage].setCompoundDrawables(webpageOther, null, exitTab, + null); + if (favicon != null) { + setFavicon(view.getId(), favicon); + } + + getUrl.setPadding(tenPad, 0, tenPad, 0); + urlToLoad[numberPage][0] = url; + + if (!uBar.isShown() && showFullScreen) { + uBar.startAnimation(slideDown); + } + } + + public static void onCreateWindow(Message resultMsg) { + 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); + } + + public static void onShowCustomView() { + background.removeView(main[pageId]); + uBar.setVisibility(View.GONE); + } + + public static void onHideCustomView(FrameLayout fullScreenContainer, + CustomViewCallback mCustomViewCallback, int orientation) { + FrameLayout screen = (FrameLayout) ACTIVITY.getWindow().getDecorView(); + screen.removeView(fullScreenContainer); + fullScreenContainer = null; + mCustomViewCallback.onCustomViewHidden(); + ACTIVITY.setRequestedOrientation(orientation); + background.addView(main[pageId]); + uBar.setVisibility(View.VISIBLE); + uBar.bringToFront(); + } + + public static void onReceivedTitle(int numberPage, String title) { + if (title != null && title.length() != 0) { + urlTitle[numberPage].setText(title); + urlToLoad[numberPage][1] = title; + Utils.updateHistory(CONTEXT, CONTEXT.getContentResolver(), + noStockBrowser, urlToLoad[numberPage][0], title); + } + } + + public static void openFileChooser(ValueCallback uploadMsg) { + mUploadMessage = uploadMsg; + Intent i = new Intent(Intent.ACTION_GET_CONTENT); + i.addCategory(Intent.CATEGORY_OPENABLE); + i.setType("*/*"); + ACTIVITY.startActivityForResult( + Intent.createChooser(i, "File Chooser"), 1); + } + + @Override + public boolean onTouch(View v, MotionEvent event) { + id = v.getId(); + background.clearDisappearingChildren(); + boolean xPress = false; + int x = (int) event.getX(); + int y = (int) event.getY(); + Rect edge = new Rect(); + v.getLocalVisibleRect(edge); + urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); + if (event.getAction() == MotionEvent.ACTION_DOWN) { + timeTabPressed = System.currentTimeMillis(); + } else if (event.getAction() == MotionEvent.ACTION_UP) { + + if ((System.currentTimeMillis() - timeTabPressed) > 1000) { + xPress = true; + } + + if (x >= (edge.right - bounds.width() - v.getPaddingRight() - 10 * 3 / 2) + && x <= (edge.right - v.getPaddingRight() + 10 * 3 / 2) + && y >= (v.getPaddingTop() - 10 / 2) + && y <= (v.getHeight() - v.getPaddingBottom() + 10 / 2)) { + xPress = true; + } + if (id == pageId) { + if (xPress) { + deleteTab(id); + uBar.bringToFront(); + } + } else if (id != pageId) { + if (xPress) { + deleteTab(id); + } else { + if (API < 16) { + urlTitle[pageId].setBackgroundDrawable(inactive); + } else if (API > 15) { + urlTitle[pageId].setBackground(inactive); + } + urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); + if (!showFullScreen) { + background.addView(main[id]); + main[id].startAnimation(fadeIn); + main[pageId].startAnimation(fadeOut); + background.removeView(main[pageId]); + uBar.bringToFront(); + } else if (API >= 12) { + main[id].setAlpha(0f); + background.addView(main[id]); + try { + main[id].animate().alpha(1f) + .setDuration(mShortAnimationDuration); + } catch (NullPointerException ignored) { + } + background.removeView(main[pageId]); + uBar.bringToFront(); + } else { + background.removeView(main[pageId]); + background.addView(main[id]); + } + uBar.bringToFront(); + + pageId = id; + setUrlText(urlToLoad[pageId][0]); + getUrl.setPadding(tenPad, 0, tenPad, 0); + if (API < 16) { + urlTitle[pageId].setBackgroundDrawable(active); + } else if (API > 15) { + urlTitle[pageId].setBackground(active); + } + if (main[pageId].getProgress() < 100) { + refresh.setVisibility(View.INVISIBLE); + + progressBar.setVisibility(View.VISIBLE); + + } else { + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + } + onProgressChanged(pageId, main[pageId].getProgress()); + tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); + main[pageId].invalidate(); + } + } + + } + uBar.bringToFront(); + v.setPadding(leftPad, 0, rightPad, 0); + return true; + } + + public static class ClickHandler extends Handler { + + /* + * (non-Javadoc) + * + * @see android.os.Handler#handleMessage(android.os.Message) + */ + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + String url = null; + url = msg.getData().getString("url"); + handleLongClickOnBookmarks(url, msg.arg1); + } + + } + + public static boolean onLongClick(final int n) { + final HitTestResult result = main[n].getHitTestResult(); + + if (main[n].getUrl().contains( + "file://" + CONTEXT.getFilesDir() + "/bookmarks.html")) { + + Message message = new Message(); + message.arg1 = n; + message.setTarget(new ClickHandler()); + main[n].requestFocusNodeHref(message); + + return true; + } else if (result.getExtra() != null) { + if (result.getType() == 5 && API > 8) { + DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: { + int num = pageId; + newTab(number, result.getExtra(), false); + // urlTitle[num].performClick(); + pageId = num; + break; + } + case DialogInterface.BUTTON_NEGATIVE: { + main[n].loadUrl(result.getExtra()); + break; + } + case DialogInterface.BUTTON_NEUTRAL: { + if (API > 8) { + String url = result.getExtra(); + + Utils.downloadFile(CONTEXT, url, null, null); + + } + break; + } + } + } + }; + + AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); // dialog + builder.setMessage("What would you like to do with this image?") + .setPositiveButton("Open in New Tab", + dialogClickListener) + .setNegativeButton("Open Normally", dialogClickListener) + .setNeutralButton("Download Image", dialogClickListener) + .show(); + + } else { + DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: { + int num = pageId; + newTab(number, result.getExtra(), false); + pageId = num; + break; + } + case DialogInterface.BUTTON_NEGATIVE: { + main[n].loadUrl(result.getExtra()); + break; + } + case DialogInterface.BUTTON_NEUTRAL: { + + if (API < 11) { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ACTIVITY + .getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setText(result.getExtra()); + } else { + ClipboardManager clipboard = (ClipboardManager) ACTIVITY + .getSystemService(CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("label", + result.getExtra()); + clipboard.setPrimaryClip(clip); + } + break; + } + } + } + }; + + AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); // dialog + builder.setTitle(result.getExtra()).setMessage("What do you want to do with this link?") + .setPositiveButton("Open in New Tab", + dialogClickListener) + .setNegativeButton("Open Normally", dialogClickListener) + .setNeutralButton("Copy link", dialogClickListener) + .show(); + } + return true; + } else { + return false; + } + } + + public static void handleLongClickOnBookmarks(final String clickedURL, + final int n) { + if (clickedURL != null) { + + DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: { + int num = pageId; + newTab(number, clickedURL, false); + pageId = num; + break; + } + case DialogInterface.BUTTON_NEGATIVE: { + main[n].loadUrl(clickedURL); + break; + } + case DialogInterface.BUTTON_NEUTRAL: { + deleteBookmark(clickedURL); + break; + } + } + } + }; + + AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); // dialog + builder.setMessage("What would you like to do with this bookmark?") + .setPositiveButton("Open in New Tab", dialogClickListener) + .setNegativeButton("Open Normally", dialogClickListener) + .setNeutralButton("Delete", dialogClickListener).show(); + } + } + + public static void goBack() { + if (main[pageId].isShown() && main[pageId].canGoBack()) { + main[pageId].goBack(); + } + } + + public static void goForward() { + if (main[pageId].isShown() && main[pageId].canGoForward()) { + main[pageId].goForward(); + } + } + + public static void onProgressChanged(int id, int progress) { + if (id == pageId) { + browserProgress.setProgress(progress); + if (progress < 100) { + browserProgress.setVisibility(View.VISIBLE); + } else { + browserProgress.setVisibility(View.GONE); + } + } + } +} \ No newline at end of file diff --git a/src/acr/browser/barebones/activities/IncognitoModeActivity.java b/src/acr/browser/barebones/activities/IncognitoModeActivity.java index 00d2bc1..db682e3 100644 --- a/src/acr/browser/barebones/activities/IncognitoModeActivity.java +++ b/src/acr/browser/barebones/activities/IncognitoModeActivity.java @@ -8,7 +8,6 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -17,6 +16,10 @@ import acr.browser.barebones.R; import acr.browser.barebones.customwebview.IncognitoWebView; import acr.browser.barebones.databases.DatabaseHandler; import acr.browser.barebones.databases.SpaceTokenizer; +import acr.browser.barebones.incognitoclasses.IncognitoChromeClient; +import acr.browser.barebones.incognitoclasses.IncognitoDownloadListener; +import acr.browser.barebones.incognitoclasses.IncognitoLongClickListener; +import acr.browser.barebones.incognitoclasses.IncognitoWebViewClient; import acr.browser.barebones.utilities.BookmarkPageVariables; import acr.browser.barebones.utilities.FinalVariables; import acr.browser.barebones.utilities.HistoryPageVariables; @@ -36,24 +39,19 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteMisuseException; import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.net.http.SslError; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.Browser; -import android.text.InputType; import android.text.TextUtils; -import android.text.method.PasswordTransformationMethod; import android.util.DisplayMetrics; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; -import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -63,7 +61,6 @@ 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; @@ -72,25 +69,17 @@ import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.webkit.CookieManager; import android.webkit.CookieSyncManager; -import android.webkit.DownloadListener; -import android.webkit.GeolocationPermissions; -import android.webkit.HttpAuthHandler; -import android.webkit.SslErrorHandler; import android.webkit.ValueCallback; -import android.webkit.WebChromeClient; import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebIconDatabase; import android.webkit.WebSettings; import android.webkit.WebSettings.LayoutAlgorithm; import android.webkit.WebSettings.PluginState; import android.webkit.WebSettings.RenderPriority; -import android.webkit.WebStorage.QuotaUpdater; import android.webkit.WebView; import android.webkit.WebView.HitTestResult; -import android.webkit.WebViewClient; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; -import android.widget.EditText; import android.widget.FrameLayout; import android.widget.HorizontalScrollView; import android.widget.ImageView; @@ -106,453 +95,10 @@ import android.widget.TextView.OnEditorActionListener; import android.widget.Toast; @SuppressWarnings("deprecation") -public class IncognitoModeActivity extends Activity { +public class IncognitoModeActivity extends Activity implements OnTouchListener { - @SuppressLint("SetJavaScriptEnabled") - public class CustomChromeClient extends WebChromeClient { - public Bitmap mDefaultVideoPoster; - public View mVideoProgressView; - public FrameLayout fullScreenContainer; - public int orientation; - - @Override - public void onExceededDatabaseQuota(String url, - String databaseIdentifier, long quota, - long estimatedDatabaseSize, long totalQuota, - QuotaUpdater quotaUpdater) { - quotaUpdater.updateQuota(totalQuota + estimatedDatabaseSize); - - } - - @Override - public void onProgressChanged(WebView view, int newProgress) { - - super.onProgressChanged(view, newProgress); - } - - @Override - public void onReachedMaxAppCacheSize(long requiredStorage, long quota, - QuotaUpdater quotaUpdater) { - quotaUpdater.updateQuota(quota + requiredStorage); - } - - @Override - public Bitmap getDefaultVideoPoster() { - if (mDefaultVideoPoster == null) { - mDefaultVideoPoster = BitmapFactory.decodeResource( - getResources(), android.R.color.black); - } - return mDefaultVideoPoster; - } - - @Override - public View getVideoLoadingProgressView() { - if (mVideoProgressView == null) { - LayoutInflater inflater = LayoutInflater.from(getBaseContext()); - mVideoProgressView = inflater.inflate( - android.R.layout.simple_spinner_item, null); - } - return mVideoProgressView; - } - - @Override - public void onCloseWindow(WebView window) { - Message msg = Message.obtain(); - msg.what = 3; - msg.arg1 = window.getId(); - browserHandler.sendMessage(msg); - super.onCloseWindow(window); - } - - @Override - public boolean onCreateWindow(WebView view, boolean isDialog, - boolean isUserGesture, final Message resultMsg) { - - if (isUserGesture) { - 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 - public void onGeolocationPermissionsShowPrompt(final String origin, - final GeolocationPermissions.Callback callback) { - - if (!allowLocation) { - callback.invoke(origin, false, false); - } - if (allowLocation) { - final boolean remember = true; - AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); - builder.setTitle("Location Access"); - String org = null; - if (origin.length() > 50) { - org = (String) origin.subSequence(0, 50) + "..."; - } else { - org = origin; - } - builder.setMessage(org + "\nWould like to use your Location ") - .setCancelable(true) - .setPositiveButton("Allow", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int id) { - callback.invoke(origin, true, remember); - } - }) - .setNegativeButton("Don't Allow", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int id) { - callback.invoke(origin, false, remember); - } - }); - AlertDialog alert = builder.create(); - alert.show(); - } - } - - @Override - public void onHideCustomView() { - if (mCustomView == null && mCustomViewCallback == null) { - return; - } - mCustomView.setKeepScreenOn(false); - FrameLayout screen = (FrameLayout) getWindow().getDecorView(); - screen.removeView(fullScreenContainer); - fullScreenContainer = null; - mCustomView = null; - mCustomViewCallback.onCustomViewHidden(); - setRequestedOrientation(orientation); - background.addView(main[pageId]); - uBar.setVisibility(View.VISIBLE); - uBar.bringToFront(); - } - - @Override - public void onReceivedIcon(WebView view, Bitmap favicon) { - setFavicon(view.getId(), favicon); - } - - @Override - public void onReceivedTitle(final WebView view, final String title) { - numberPage = view.getId(); - if (title != null && title.length() != 0) { - urlTitle[numberPage].setText(title); - urlToLoad[numberPage][1] = title; - } - super.onReceivedTitle(view, title); - } - - @Override - public void onShowCustomView(View view, int requestedOrientation, - CustomViewCallback callback) { - if (mCustomView != null) { - callback.onCustomViewHidden(); - return; - } - 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; - setRequestedOrientation(requestedOrientation); - - } - - @Override - public void onShowCustomView(View view, - WebChromeClient.CustomViewCallback callback) { - if (mCustomView != null) { - callback.onCustomViewHidden(); - return; - } - 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; - setRequestedOrientation(getRequestedOrientation()); - } - - public void openFileChooser(ValueCallback uploadMsg) { - mUploadMessage = uploadMsg; - Intent i = new Intent(Intent.ACTION_GET_CONTENT); - i.addCategory(Intent.CATEGORY_OPENABLE); - i.setType("image/*"); - startActivityForResult(Intent.createChooser(i,"File Chooser"), 1); - } - - public void openFileChooser(ValueCallback uploadMsg, - String acceptType) { - mUploadMessage = uploadMsg; - Intent i = new Intent(Intent.ACTION_GET_CONTENT); - i.addCategory(Intent.CATEGORY_OPENABLE); - i.setType("*/*"); - startActivityForResult( - Intent.createChooser(i, "File Browser"),1); - } - - public void openFileChooser(ValueCallback uploadMsg, - String acceptType, String capture) { - openFileChooser(uploadMsg); - } - } - - public class CustomDownloadListener implements DownloadListener { - - @Override - public void onDownloadStart(final String url, String userAgent, - final String contentDisposition, final String mimetype, - long contentLength) { - if (url.endsWith(".mp4") || url.endsWith(".m4a")) { - - AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); - builder.setTitle("Open as..."); - builder.setMessage( - "Do you want to download this video or watch it in an app?") - .setCancelable(true) - .setPositiveButton("Download", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int id) { - Utils.downloadFile(CONTEXT, url, - contentDisposition, mimetype); - } - }) - .setNegativeButton("Watch", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int id) { - Intent intent = new Intent( - Intent.ACTION_VIEW); - intent.setDataAndType(Uri.parse(url), - "video/mp4"); - intent.putExtra( - "acr.browser.barebones.Download", - 1); - startActivity(intent); - } - }); - AlertDialog alert = builder.create(); - alert.show(); - - } else { - Utils.downloadFile(CONTEXT, url, contentDisposition, mimetype); - } - } - - } - - public class IncognitoWebViewClient extends WebViewClient { - - @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) { - return false; - } - - @Override - public void onReceivedHttpAuthRequest(final WebView view, - final HttpAuthHandler handler, final String host, - final String realm) { - - AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); - final EditText name = new EditText(CONTEXT); - final EditText password = new EditText(CONTEXT); - LinearLayout passLayout = new LinearLayout(CONTEXT); - passLayout.setOrientation(LinearLayout.VERTICAL); - - passLayout.addView(name); - passLayout.addView(password); - - name.setHint("Username"); - password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); - password.setTransformationMethod(new PasswordTransformationMethod()); - password.setHint("Password"); - builder.setTitle("Sign in"); - builder.setView(passLayout); - builder.setCancelable(true) - .setPositiveButton("Sign in", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int id) { - String user = name.getText().toString(); - String pass = password.getText().toString(); - handler.proceed(user.trim(), pass.trim()); - Log.i("Lightning", "Request Login"); - - } - }) - .setNegativeButton("Cancel", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int id) { - handler.cancel(); - - } - }); - AlertDialog alert = builder.create(); - alert.show(); - - } - - @Override - public void onScaleChanged(WebView view, float oldScale, float newScale) { - if (view.isShown()) { - view.invalidate(); - } - super.onScaleChanged(view, oldScale, newScale); - } - - @Override - public void onPageFinished(WebView view, final String url) { - if (view.isShown()) { - view.invalidate(); - progressBar.setVisibility(View.GONE); - refresh.setVisibility(View.VISIBLE); - - if (showFullScreen && uBar.isShown()) { - uBar.startAnimation(slideUp); - } - } - view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); - Log.i("Lightning", "Page Finished"); - loadTime = System.currentTimeMillis() - loadTime; - Log.i("Lightning", "Load Time: " + loadTime); - super.onPageFinished(view, url); - } - - @Override - public void onPageStarted(WebView view, String url, Bitmap favicon) { - Log.i("Lightning", "Page Started"); - loadTime = System.currentTimeMillis(); - numberPage = view.getId(); - - if (url.startsWith("file:///")) { - view.getSettings().setUseWideViewPort(false); - } else { - view.getSettings().setUseWideViewPort(settings.getBoolean("wideviewport", true)); - } - - if (view.isShown()) { - refresh.setVisibility(View.INVISIBLE); - progressBar.setVisibility(View.VISIBLE); - setUrlText(url); - } - - urlTitle[numberPage].setCompoundDrawables(incognitoPage, null, - exitTab, null); - if (favicon != null) { - setFavicon(view.getId(), favicon); - } - - getUrl.setPadding(tenPad, 0, tenPad, 0); - urlToLoad[numberPage][0] = url; - - if (!uBar.isShown() && showFullScreen) { - uBar.startAnimation(slideDown); - } - super.onPageStarted(view, url, favicon); - } - - @Override - 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(); - if (error.getPrimaryError() == SslError.SSL_UNTRUSTED) { - alert.show(); - } else { - handler.proceed(); - } - - } - - @Override - 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); - } - } - - public void generateHistory(final IncognitoWebView view) { + public static void generateHistory(final IncognitoWebView view, + final Context context) { Thread history = new Thread(new Runnable() { @@ -571,8 +117,6 @@ public class IncognitoModeActivity extends Activity { null, // Selection arguments (none) null, null, null); - handler.sendEmptyMessage(1); - } catch (SQLiteException ignored) { } catch (NullPointerException ignored) { } catch (IllegalStateException ignored) { @@ -602,13 +146,14 @@ public class IncognitoModeActivity extends Activity { } while (n < 49 && historyCursor.moveToPrevious()); } } + handler.sendEmptyMessage(1); } catch (SQLiteException ignored) { } catch (NullPointerException ignored) { } catch (IllegalStateException ignored) { } historyHtml += BookmarkPageVariables.End; - File historyWebPage = new File(getBaseContext().getFilesDir(), + File historyWebPage = new File(context.getFilesDir(), "history.html"); try { FileWriter hWriter = new FileWriter(historyWebPage, false); @@ -617,20 +162,20 @@ public class IncognitoModeActivity extends Activity { } catch (IOException e) { e.printStackTrace(); } - if (uBar.isShown()) { + if (urlBar.isShown()) { urlTitle[pageId].setText("History"); setUrlText(""); getUrl.setPadding(tenPad, 0, tenPad, 0); } - view.loadUrl("file:///" + historyWebPage); + view.loadUrl("file://" + historyWebPage); } }); history.run(); } - public void setUrlText(String url) { + public static void setUrlText(String url) { if (url != null) { if (!url.startsWith("file://")) { getUrl.setText(url); @@ -640,102 +185,19 @@ public class IncognitoModeActivity extends Activity { } } - public class TabTouchListener implements OnTouchListener { - - @Override - public boolean onTouch(View v, MotionEvent event) { - id = v.getId(); - background.clearDisappearingChildren(); - boolean xPress = false; - int x = (int) event.getX(); - int y = (int) event.getY(); - Rect edge = new Rect(); - v.getLocalVisibleRect(edge); - - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); - if (event.getAction() == MotionEvent.ACTION_UP) { - if (x >= (edge.right - bounds.width() - v.getPaddingRight() - 10 * 3 / 2) - && x <= (edge.right - v.getPaddingRight() + 10 * 3 / 2) - && y >= (v.getPaddingTop() - 10 / 2) - && y <= (v.getHeight() - v.getPaddingBottom() + 10 / 2)) { - xPress = true; - } - if (id == pageId) { - if (xPress) { - deleteTab(id); - uBar.bringToFront(); - } - } else if (id != pageId) { - if (xPress) { - deleteTab(id); - } else { - if (API < 16) { - urlTitle[pageId].setBackgroundDrawable(inactive); - } else if (API > 15) { - urlTitle[pageId].setBackground(inactive); - } - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); - if (!showFullScreen) { - background.addView(main[id]); - main[id].startAnimation(fadeIn); - main[pageId].startAnimation(fadeOut); - background.removeView(main[pageId]); - uBar.bringToFront(); - } else if (API >= 12) { - main[id].setAlpha(0f); - background.addView(main[id]); - try { - main[id].animate().alpha(1f) - .setDuration(mShortAnimationDuration); - } catch (NullPointerException ignored) { - } - background.removeView(main[pageId]); - uBar.bringToFront(); - } else { - background.removeView(main[pageId]); - background.addView(main[id]); - } - uBar.bringToFront(); - - pageId = id; - setUrlText(urlToLoad[pageId][0]); - getUrl.setPadding(tenPad, 0, tenPad, 0); - if (API < 16) { - urlTitle[pageId].setBackgroundDrawable(active); - } else if (API > 15) { - urlTitle[pageId].setBackground(active); - } - if (main[pageId].getProgress() < 100) { - refresh.setVisibility(View.INVISIBLE); - progressBar.setVisibility(View.VISIBLE); - } else { - progressBar.setVisibility(View.GONE); - refresh.setVisibility(View.VISIBLE); - } - tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); - main[pageId].invalidate(); - } - } - - } - uBar.bringToFront(); - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); - return true; - } - - } - - public void removeView(WebView view) { + public static void removeView(WebView view) { if (!showFullScreen) { view.startAnimation(fadeOut); } background.removeView(view); - uBar.bringToFront(); + urlBar.bringToFront(); } - public void deleteBookmark(String url) { - File book = new File(getBaseContext().getFilesDir(), "bookmarks"); - File bookUrl = new File(getBaseContext().getFilesDir(), "bookurl"); + private static IncognitoModeActivity ACTIVITY; + + public static void deleteBookmark(String url) { + File book = new File(CONTEXT.getFilesDir(), "bookmarks"); + File bookUrl = new File(CONTEXT.getFilesDir(), "bookurl"); int n = 0; try { BufferedWriter bookWriter = new BufferedWriter(new FileWriter(book)); @@ -774,144 +236,7 @@ public class IncognitoModeActivity extends Activity { readUrl.close(); } catch (IOException ignored) { } - openBookmarks(main[pageId]); - } - - public class WebPageLongClickListener implements OnLongClickListener { - - @Override - public boolean onLongClick(View v) { - final HitTestResult result = main[pageId].getHitTestResult(); - if (main[pageId].getUrl().contains( - "file:///" + getBaseContext().getFilesDir() - + "/bookmarks.html")) { - if (result.getExtra() != null) { - DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - switch (which) { - case DialogInterface.BUTTON_POSITIVE: { - int num = pageId; - newTab(number, result.getExtra(), false, false); - // urlTitle[num].performClick(); - pageId = num; - break; - } - case DialogInterface.BUTTON_NEGATIVE: { - main[pageId].loadUrl(result.getExtra()); - break; - } - case DialogInterface.BUTTON_NEUTRAL: { - - deleteBookmark(result.getExtra()); - break; - } - } - } - }; - - AlertDialog.Builder builder = new AlertDialog.Builder( - CONTEXT); // dialog - builder.setMessage( - "What would you like to do with this link?") - .setPositiveButton("Open in New Tab", - dialogClickListener) - .setNegativeButton("Open Normally", - dialogClickListener) - .setNeutralButton("Delete", dialogClickListener) - .show(); - } - return true; - } else if (result.getExtra() != null) { - if (result.getType() == 5 && API > 8) { - DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - switch (which) { - case DialogInterface.BUTTON_POSITIVE: { - int num = pageId; - newTab(number, result.getExtra(), false, false); - // urlTitle[num].performClick(); - pageId = num; - break; - } - case DialogInterface.BUTTON_NEGATIVE: { - main[pageId].loadUrl(result.getExtra()); - break; - } - case DialogInterface.BUTTON_NEUTRAL: { - if (API > 8) { - String url = result.getExtra(); - - Utils.downloadFile(CONTEXT, url, null, null); - - } - break; - } - } - } - }; - - AlertDialog.Builder builder = new AlertDialog.Builder( - CONTEXT); // dialog - builder.setMessage( - "What would you like to do with this link?") - .setPositiveButton("Open in New Tab", - dialogClickListener) - .setNegativeButton("Open Normally", - dialogClickListener) - .setNeutralButton("Download Image", - dialogClickListener).show(); - - } else { - DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - switch (which) { - case DialogInterface.BUTTON_POSITIVE: { - int num = pageId; - newTab(number, result.getExtra(), false, false); - pageId = num; - break; - } - case DialogInterface.BUTTON_NEGATIVE: { - main[pageId].loadUrl(result.getExtra()); - break; - } - case DialogInterface.BUTTON_NEUTRAL: { - - if (API < 11) { - android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); - clipboard.setText(result.getExtra()); - } else { - ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); - ClipData clip = ClipData.newPlainText( - "label", result.getExtra()); - clipboard.setPrimaryClip(clip); - } - break; - } - } - } - }; - - AlertDialog.Builder builder = new AlertDialog.Builder( - CONTEXT); // dialog - builder.setMessage( - "What would you like to do with this link?") - .setPositiveButton("Open in New Tab", - dialogClickListener) - .setNegativeButton("Open Normally", - dialogClickListener) - .setNeutralButton("Copy link", dialogClickListener) - .show(); - } - return true; - } else { - return false; - } - } - + openBookmarks(CONTEXT, main[pageId]); } // variables to differentiate free from paid @@ -919,15 +244,15 @@ public class IncognitoModeActivity extends Activity { public static final int MAX_BOOKMARKS = FinalVariables.MAX_BOOKMARKS; public static final boolean PAID_VERSION = FinalVariables.PAID_VERSION; - public final Context CONTEXT = IncognitoModeActivity.this; + public static Context CONTEXT; public static final String HOMEPAGE = FinalVariables.HOMEPAGE; public static String SEARCH; public static SimpleAdapter adapter; public static MultiAutoCompleteTextView getUrl; - public static final TextView[] urlTitle = new TextView[MAX_TABS]; - public final static IncognitoWebView[] main = new IncognitoWebView[MAX_TABS]; + public static TextView[] urlTitle = new TextView[MAX_TABS]; + public static final IncognitoWebView[] main = new IncognitoWebView[MAX_TABS]; public static Rect bounds; public static ValueCallback mUploadMessage; public static ImageView refresh; @@ -936,7 +261,6 @@ public class IncognitoModeActivity extends Activity { public static Drawable webpageOther; public static Drawable incognitoPage; public static Drawable exitTab; - public static int numberPage; public static long loadTime = 0; public static int number; public static int pageId = 0; @@ -948,6 +272,7 @@ public class IncognitoModeActivity extends Activity { public static int pixels; public static int leftPad; public static int rightPad; + public static ProgressBar browserProgress; public static final int API = FinalVariables.API; public static int mShortAnimationDuration; public static int id; @@ -955,8 +280,6 @@ public class IncognitoModeActivity extends Activity { public static int urlColumn; public static int titleColumn; public static int closeWindow; - public static View mCustomView = null; - public static CustomViewCallback mCustomViewCallback; public static boolean isPhone = false; public static boolean allowLocation; public static boolean savePasswords; @@ -972,15 +295,14 @@ public class IncognitoModeActivity extends Activity { public static String urlA; public static String title; public static String[] memoryURL = new String[MAX_TABS]; - public static final String[] bUrl = new String[MAX_BOOKMARKS]; - public static final String[] bTitle = new String[MAX_BOOKMARKS]; + public static String[] bUrl = new String[MAX_BOOKMARKS]; + public static String[] bTitle = new String[MAX_BOOKMARKS]; public static String[] columns; public static String homepage; public static final String preferences = "settings"; - public static String userAgent; - public static final String[][] urlToLoad = new String[MAX_TABS][2]; + public static String[][] urlToLoad = new String[MAX_TABS][2]; public static FrameLayout background; - public static RelativeLayout uBar; + public static RelativeLayout urlBar; public static HorizontalScrollView tabScroll; public static Animation slideUp; public static Animation slideDown; @@ -1009,7 +331,10 @@ public class IncognitoModeActivity extends Activity { public static LinearLayout tabLayout; - @SuppressWarnings("unused") + public static String[] GetArray(String input) { + return input.split("\\|\\$\\|SEPARATOR\\|\\$\\|"); + } + public static void setFavicon(int id, Bitmap favicon) { Drawable icon = null; icon = new BitmapDrawable(null, favicon); @@ -1022,34 +347,13 @@ public class IncognitoModeActivity extends Activity { } @SuppressLint("SetJavaScriptEnabled") - IncognitoWebView browserSettings(IncognitoWebView view) { - view.setAnimationCacheEnabled(false); - view.setDrawingCacheEnabled(true); - view.setBackgroundColor(getResources().getColor(android.R.color.white)); - view.setDrawingCacheBackgroundColor(getResources().getColor( - android.R.color.white)); - view.setWillNotCacheDrawing(false); - view.setLongClickable(true); - view.setAlwaysDrawnWithCacheEnabled(true); - view.setScrollbarFadingEnabled(true); - view.setFocusable(true); - view.setFocusableInTouchMode(true); - view.setSaveEnabled(true); - view.setBackgroundColor(0xFFFFFFFF); + public static void browserSettings(Context context, IncognitoWebView view) { WebSettings webViewSettings = view.getSettings(); if (settings.getBoolean("java", true)) { webViewSettings.setJavaScriptEnabled(true); - webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true); // TODO - // not - // sure - // whether - // to - // enable - // or - // disable + webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true); } - webViewSettings.setAllowFileAccess(true); if (API < 14) { switch (settings.getInt("textsize", 3)) { case 1: @@ -1090,10 +394,6 @@ public class IncognitoModeActivity extends Activity { } webViewSettings.setSupportMultipleWindows(settings.getBoolean( "newwindow", true)); - webViewSettings.setDomStorageEnabled(true); - webViewSettings.setAppCacheEnabled(true); - webViewSettings.setAppCachePath(getApplicationContext().getFilesDir() - .getAbsolutePath() + "/cache"); switch (settings.getInt("enableflash", 0)) { case 0: @@ -1109,42 +409,29 @@ public class IncognitoModeActivity extends Activity { default: break; } - - if (API < 18) { - if (settings.getBoolean("passwords", false)) { + if (settings.getBoolean("passwords", false)) { + if (API < 18) { webViewSettings.setSavePassword(true); - webViewSettings.setSaveFormData(true); } + webViewSettings.setSaveFormData(true); + } + if (API < 18) { try { - webViewSettings.setLightTouchEnabled(true); webViewSettings.setRenderPriority(RenderPriority.HIGH); - } catch (SecurityException ignored) { } - } else { - if (settings.getBoolean("passwords", false)) { - webViewSettings.setSaveFormData(true); - } } - webViewSettings.setGeolocationEnabled(true); - webViewSettings.setGeolocationDatabasePath(getApplicationContext() - .getFilesDir().getAbsolutePath()); - webViewSettings.setDatabaseEnabled(true); - webViewSettings.setDatabasePath(getApplicationContext().getFilesDir() - .getAbsolutePath() + "/databases"); + webViewSettings.setGeolocationEnabled(settings.getBoolean("location", + false)); + webViewSettings.setGeolocationDatabasePath(context.getFilesDir() + .getAbsolutePath()); - webViewSettings.setUserAgentString(userAgent); - webViewSettings.setSupportZoom(true); - webViewSettings.setBuiltInZoomControls(true); webViewSettings.setUseWideViewPort(settings.getBoolean("wideviewport", true)); webViewSettings.setLoadWithOverviewMode(settings.getBoolean( "overviewmode", true)); - if (API >= 11) { - webViewSettings.setDisplayZoomControls(false); - webViewSettings.setAllowContentAccess(true); - } + if (settings.getBoolean("textreflow", false)) { webViewSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); } else { @@ -1154,7 +441,7 @@ public class IncognitoModeActivity extends Activity { webViewSettings.setBlockNetworkImage(settings.getBoolean("blockimages", false)); webViewSettings.setLoadsImagesAutomatically(true); - return view; + } void deleteTab(final int del) { @@ -1194,7 +481,7 @@ public class IncognitoModeActivity extends Activity { }); urlTitle[del].startAnimation(yolo); - uBar.bringToFront(); + urlBar.bringToFront(); } void findNewView(int id) { @@ -1210,7 +497,7 @@ public class IncognitoModeActivity extends Activity { if (urlTitle[id].isShown()) { background.addView(main[id]); main[id].setVisibility(View.VISIBLE); - uBar.bringToFront(); + urlBar.bringToFront(); if (API < 16) { urlTitle[id].setBackgroundDrawable(active); } else { @@ -1222,9 +509,11 @@ public class IncognitoModeActivity extends Activity { getUrl.setPadding(tenPad, 0, tenPad, 0); right = true; if (main[id].getProgress() < 100) { + onProgressChanged(id, main[id].getProgress()); refresh.setVisibility(View.INVISIBLE); progressBar.setVisibility(View.VISIBLE); } else { + onProgressChanged(id, main[id].getProgress()); progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); } @@ -1238,7 +527,7 @@ public class IncognitoModeActivity extends Activity { if (urlTitle[leftId].isShown()) { background.addView(main[leftId]); main[leftId].setVisibility(View.VISIBLE); - // uBar.bringToFront(); + // urlBar.bringToFront(); if (API < 16) { urlTitle[leftId].setBackgroundDrawable(active); } else { @@ -1250,9 +539,11 @@ public class IncognitoModeActivity extends Activity { getUrl.setPadding(tenPad, 0, tenPad, 0); left = true; if (main[leftId].getProgress() < 100) { + onProgressChanged(leftId, main[leftId].getProgress()); refresh.setVisibility(View.INVISIBLE); progressBar.setVisibility(View.VISIBLE); } else { + onProgressChanged(leftId, main[leftId].getProgress()); progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); } @@ -1270,7 +561,7 @@ public class IncognitoModeActivity extends Activity { if (!(right || left)) { finish(); } - uBar.bringToFront(); + urlBar.bringToFront(); tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); } @@ -1294,7 +585,7 @@ public class IncognitoModeActivity extends Activity { case KeyEvent.KEYCODE_ENTER: InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getUrl.getWindowToken(), 0); - searchTheWeb(getUrl.getText().toString()); + searchTheWeb(getUrl.getText().toString(), CONTEXT); return true; default: break; @@ -1316,7 +607,7 @@ public class IncognitoModeActivity extends Activity { || (arg2.getAction() == KeyEvent.KEYCODE_ENTER)) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getUrl.getWindowToken(), 0); - searchTheWeb(getUrl.getText().toString()); + searchTheWeb(getUrl.getText().toString(), CONTEXT); return true; } return false; @@ -1377,10 +668,10 @@ public class IncognitoModeActivity extends Activity { if (c != null) { noStockBrowser = false; - Log.i("Barebones", "detected AOSP browser"); + Log.i("Browser", "detected AOSP browser"); } else { noStockBrowser = true; - Log.e("Barebones", "did not detect AOSP browser"); + Log.e("Browser", "did not detect AOSP browser"); } if (c != null) { c.close(); @@ -1432,7 +723,6 @@ public class IncognitoModeActivity extends Activity { } }); - updateAutoComplete.setPriority(3); try { updateAutoComplete.start(); } catch (NullPointerException ignored) { @@ -1451,13 +741,14 @@ public class IncognitoModeActivity extends Activity { String url; url = ((TextView) arg1.findViewById(R.id.url)).getText() .toString(); - searchTheWeb(url); + getUrl.setText(url); + searchTheWeb(url, CONTEXT); url = null; getUrl.setPadding(tenPad, 0, tenPad, 0); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getUrl.getWindowToken(), 0); } catch (NullPointerException e) { - Log.e("Barebones Error: ", + Log.e("Browser Error: ", "NullPointerException on item click"); } } @@ -1505,8 +796,10 @@ public class IncognitoModeActivity extends Activity { public void finish() { background.clearDisappearingChildren(); tabScroll.clearDisappearingChildren(); - main[pageId].clearCache(true); - Log.i("Lightning", "Cache Cleared"); + if (settings.getBoolean("cache", false)) { + main[pageId].clearCache(true); + Log.i("Lightning", "Cache Cleared"); + } super.finish(); } @@ -1529,9 +822,9 @@ public class IncognitoModeActivity extends Activity { }); } - void goBookmarks(IncognitoWebView view) { - File book = new File(getBaseContext().getFilesDir(), "bookmarks"); - File bookUrl = new File(getBaseContext().getFilesDir(), "bookurl"); + static void goBookmarks(Context context, IncognitoWebView view) { + File book = new File(context.getFilesDir(), "bookmarks"); + File bookUrl = new File(context.getFilesDir(), "bookurl"); try { BufferedReader readBook = new BufferedReader(new FileReader(book)); BufferedReader readUrl = new BufferedReader(new FileReader(bookUrl)); @@ -1549,11 +842,11 @@ public class IncognitoModeActivity extends Activity { } catch (FileNotFoundException ignored) { } catch (IOException ignored) { } - openBookmarks(view); + openBookmarks(context, view); } @SuppressLint("InlinedApi") - void initialize() { + private void initialize() { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); historyHandler = new DatabaseHandler(this); @@ -1562,6 +855,8 @@ public class IncognitoModeActivity extends Activity { cookieManager.setAcceptCookie(false); progressBar = (ProgressBar) findViewById(R.id.progressBar1); + browserProgress = (ProgressBar) findViewById(R.id.progressBar); + browserProgress.setVisibility(View.GONE); if (API >= 11) { progressBar.setIndeterminateDrawable(getResources().getDrawable( @@ -1572,7 +867,7 @@ public class IncognitoModeActivity extends Activity { } showFullScreen = settings.getBoolean("fullscreen", false); - uBar = (RelativeLayout) findViewById(R.id.urlBar); + urlBar = (RelativeLayout) findViewById(R.id.urlBar); RelativeLayout bg = (RelativeLayout) findViewById(R.id.background); slideUp = AnimationUtils.loadAnimation(this, R.anim.slide_up); slideDown = AnimationUtils.loadAnimation(this, R.anim.slide_down); @@ -1587,7 +882,7 @@ public class IncognitoModeActivity extends Activity { @Override public void onAnimationEnd(Animation arg0) { - uBar.setVisibility(View.GONE); + urlBar.setVisibility(View.GONE); } @Override @@ -1616,7 +911,7 @@ public class IncognitoModeActivity extends Activity { @Override public void onAnimationStart(Animation animation) { - uBar.setVisibility(View.VISIBLE); + urlBar.setVisibility(View.VISIBLE); } }); @@ -1657,6 +952,9 @@ public class IncognitoModeActivity extends Activity { case 6: SEARCH = FinalVariables.BAIDU_SEARCH; break; + case 7: + SEARCH = FinalVariables.YANDEX_SEARCH; + break; } exitTab = getResources().getDrawable(R.drawable.stop); // user @@ -1666,9 +964,6 @@ public class IncognitoModeActivity extends Activity { // stored // homepage // variable - - userAgent = settings.getString("agent", mobile); // initializing - // useragent string allowLocation = settings.getBoolean("location", false); // initializing // location // variable @@ -1734,7 +1029,6 @@ public class IncognitoModeActivity extends Activity { @Override public void run() { reopenOldTabs(); // restores old tabs or creates a new one - } }); @@ -1794,14 +1088,14 @@ public class IncognitoModeActivity extends Activity { enterUrl(); if (showFullScreen) { - bg.removeView(uBar); - background.addView(uBar); + bg.removeView(urlBar); + background.addView(urlBar); } browserHandler = new Handle(); } - class Handle extends Handler { + static class Handle extends Handler { @Override public void handleMessage(Message msg) { @@ -1811,7 +1105,7 @@ public class IncognitoModeActivity extends Activity { break; } case 2: { - deleteTab(msg.arg1); + // deleteTab(msg.arg1); break; } case 3: { @@ -1825,25 +1119,37 @@ public class IncognitoModeActivity extends Activity { } void reopenOldTabs() { - // it opens the home-page - newTab(number, homepage, true, false); - main[number - 1].resumeTimers(); + Intent url = getIntent(); + String URL = url.getDataString(); + + if (URL != null) { + // opens a new tab with the URL if its there + newTab(number, URL, true, false); + main[number - 1].resumeTimers(); + + } else { + // otherwise it opens the home-page + newTab(number, homepage, true, false); + main[number - 1].resumeTimers(); + + } } - public IncognitoWebView makeTab(final int pageToView, String Url, + public static IncognitoWebView makeTab(final int pageToView, String Url, final boolean display) { IncognitoWebView view = new IncognitoWebView(CONTEXT); view.setId(pageToView); allowLocation = settings.getBoolean("location", false); - view.setWebViewClient(new IncognitoWebViewClient()); - view.setWebChromeClient(new CustomChromeClient()); + browserSettings(CONTEXT, view); + view.setWebViewClient(new IncognitoWebViewClient(ACTIVITY)); + view.setWebChromeClient(new IncognitoChromeClient(ACTIVITY)); if (API > 8) { - view.setDownloadListener(new CustomDownloadListener()); + view.setDownloadListener(new IncognitoDownloadListener(ACTIVITY)); } - view.setOnLongClickListener(new WebPageLongClickListener()); - view = browserSettings(view); + view.setOnLongClickListener(new IncognitoLongClickListener()); + agentPicker = settings.getInt("agentchoose", 1); switch (agentPicker) { case 1: @@ -1855,6 +1161,9 @@ public class IncognitoModeActivity extends Activity { case 3: view.getSettings().setUserAgentString(mobile); break; + case 4: + view.getSettings().setUserAgentString(settings.getString("userAgentString", defaultUser)); + break; } if (display) { background.removeView(main[pageId]); @@ -1862,9 +1171,9 @@ public class IncognitoModeActivity extends Activity { view.requestFocus(); pageId = pageToView; } - uBar.bringToFront(); + urlBar.bringToFront(); if (Url.contains("about:home")) { - goBookmarks(view); + goBookmarks(CONTEXT, view); } else if (Url.contains("about:blank")) { view.loadUrl(""); } else { @@ -1874,18 +1183,18 @@ public class IncognitoModeActivity extends Activity { view.loadUrl(Url); } - Log.i("Barebones", "tab complete"); + Log.i("Browser", "tab complete"); return view; } - void newSettings() { + private void newSettings() { startActivity(new Intent(FinalVariables.SETTINGS_INTENT)); } // new tab method, takes the id of the tab to be created and the url to load - int newTab(int theId, final String theUrl, final boolean display, - final boolean incognito_mode) { - Log.i("Barebones", "making tab"); + public static int newTab(int theId, final String theUrl, + final boolean display, final boolean incognito_mode) { + Log.i("Browser", "making tab"); int finalID = 0; homepage = settings.getString("home", HOMEPAGE); @@ -1896,7 +1205,8 @@ public class IncognitoModeActivity extends Activity { if (urlTitle[num].getVisibility() == View.GONE) { final int n = num; - Animation holo = AnimationUtils.loadAnimation(this, R.anim.up); + Animation holo = AnimationUtils.loadAnimation(CONTEXT, + R.anim.up); holo.setAnimationListener(new AnimationListener() { @Override @@ -1941,11 +1251,12 @@ public class IncognitoModeActivity extends Activity { exitTab, null); urlTitle[num].setPadding(leftPad, 0, rightPad, 0); urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); + main[num] = makeTab(num, theUrl, display); finalID = num; pageId = num; - uBar.bringToFront(); + urlBar.bringToFront(); if (API >= 11) { main[num].onResume(); @@ -1995,8 +1306,9 @@ public class IncognitoModeActivity extends Activity { Drawable[] drawables = title.getCompoundDrawables(); bounds = drawables[2].getBounds(); - title.setOnTouchListener(new TabTouchListener()); - Animation holo = AnimationUtils.loadAnimation(this, R.anim.up); + title.setOnTouchListener(ACTIVITY); + Animation holo = AnimationUtils.loadAnimation(CONTEXT, + R.anim.up); tabLayout.addView(title); title.setVisibility(View.INVISIBLE); holo.setAnimationListener(new AnimationListener() { @@ -2053,21 +1365,22 @@ public class IncognitoModeActivity extends Activity { @Override public void onBackPressed() { - if (showFullScreen && !uBar.isShown()) { - uBar.startAnimation(slideDown); + try { + if (showFullScreen && !urlBar.isShown()) { + urlBar.startAnimation(slideDown); + } + if (main[pageId].isShown() && main[pageId].canGoBack()) { + main[pageId].goBack(); + } else { + deleteTab(pageId); + urlBar.bringToFront(); + } + } catch (NullPointerException ignored) { } - if (main[pageId].isShown() && main[pageId].canGoBack()) { - main[pageId].goBack(); - } else { - deleteTab(pageId); - uBar.bringToFront(); - } - } @Override public void onConfigurationChanged(Configuration newConfig) { - // TODO super.onConfigurationChanged(newConfig); if (settings.getBoolean("textreflow", false)) { main[pageId].getSettings().setLayoutAlgorithm( @@ -2083,9 +1396,23 @@ public class IncognitoModeActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // displays main xml layout + CONTEXT = this; + ACTIVITY = this; settings = getSharedPreferences(preferences, 0); edit = settings.edit(); + if (settings.getBoolean("hidestatus", false)) { + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + + saveTabs = settings.getBoolean("savetabs", true); + if (saveTabs) { + String mem = settings.getString("memory", ""); + edit.putString("memory", ""); + memoryURL = GetArray(mem); + } + inactive = getResources().getDrawable(R.drawable.bg_inactive); active = getResources().getDrawable(R.drawable.bg_press); initialize(); // sets up random stuff @@ -2102,6 +1429,17 @@ public class IncognitoModeActivity extends Activity { isPhone = sizeInInches < 6.5; forward();// forward button back(); + int first = settings.getInt("second", 0); + + if (first == 0) { // This dialog alerts the user to some navigation + // techniques + String message = "Incognito mode does not add the pages you visit to your history," + + " so no one can see where you've been. For protection from tracking, Incognito also does" + + " not allow browser Cookies."; + Utils.createInformativeDialog(CONTEXT, "About Incognito", message); + edit.putInt("second", 1); + edit.commit(); + } } @Override @@ -2113,6 +1451,21 @@ public class IncognitoModeActivity extends Activity { return true; } + /* + * (non-Javadoc) + * + * @see android.app.Activity#onKeyDown(int, android.view.KeyEvent) + */ + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_SEARCH) { + getUrl.requestFocus(); + InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + manager.showSoftInput(getUrl, 0); + } + return super.onKeyDown(keyCode, event); + } + @Override public boolean onKeyLongPress(int keyCode, KeyEvent event) { @@ -2128,28 +1481,63 @@ public class IncognitoModeActivity extends Activity { return super.onKeyLongPress(keyCode, event); } + @Override + protected void onNewIntent(Intent intent) { + + String url = intent.getDataString(); + int id = -1; + int download = -1; + try { + id = intent.getExtras().getInt("acr.browser.barebones.Origin") - 1; + } catch (NullPointerException e) { + id = -1; + } + try { + download = intent.getExtras().getInt( + "acr.browser.barebones.Download"); + } catch (NullPointerException e) { + download = -1; + } + if (id >= 0) { + main[id].loadUrl(url); + } else if (download == 1) { + Utils.downloadFile(CONTEXT, url, null, null); + } else if (url != null) { + newTab(number, url, true, false); + } + + super.onNewIntent(intent); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.history: - generateHistory(main[pageId]); + generateHistory(main[pageId], CONTEXT); + return true; + case R.id.bookmark: + if (urlToLoad[pageId][1] != null) { + if (!urlToLoad[pageId][1].equals("Bookmarks")) { + Utils.addBookmark(CONTEXT, urlToLoad[pageId][1], + urlToLoad[pageId][0]); + } + } return true; case R.id.settings: newSettings(); return true; case R.id.allBookmarks: if (urlToLoad[pageId][1] == null) { - goBookmarks(main[pageId]); + goBookmarks(CONTEXT, main[pageId]); } else if (!urlToLoad[pageId][1].equals("Bookmarks")) { - goBookmarks(main[pageId]); + goBookmarks(CONTEXT, main[pageId]); } return true; case R.id.incognito: - startActivity(new Intent(FinalVariables.INCOGNITO_INTENT)); - // newTab(number, homepage, true, true); + newTab(number, homepage, true, true); return true; default: return super.onOptionsItemSelected(item); @@ -2158,19 +1546,34 @@ public class IncognitoModeActivity extends Activity { @Override protected void onPause() { - super.onPause(); + if (main[pageId] != null) { if (API >= 11) { main[pageId].onPause(); } main[pageId].pauseTimers(); } + Thread remember = new Thread(new Runnable() { + @Override + public void run() { + String s = ""; + for (int n = 0; n < MAX_TABS; n++) { + if (urlToLoad[n][0] != null) { + s = s + urlToLoad[n][0] + "|$|SEPARATOR|$|"; + } + } + edit.putString("memory", s); + edit.commit(); + } + }); + remember.start(); + super.onPause(); } @Override protected void onResume() { - super.onResume(); + onProgressChanged(pageId, main[pageId].getProgress()); if (main[pageId].getProgress() == 100) { progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); @@ -2179,10 +1582,10 @@ public class IncognitoModeActivity extends Activity { main[pageId].onResume(); } main[pageId].resumeTimers(); - + super.onResume(); } - void openBookmarks(IncognitoWebView view) { + static void openBookmarks(Context context, IncognitoWebView view) { String bookmarkHtml = BookmarkPageVariables.Heading; for (int n = 0; n < MAX_BOOKMARKS; n++) { @@ -2193,8 +1596,7 @@ public class IncognitoModeActivity extends Activity { } } bookmarkHtml += BookmarkPageVariables.End; - File bookmarkWebPage = new File(getBaseContext().getFilesDir(), - "bookmarks.html"); + File bookmarkWebPage = new File(context.getFilesDir(), "bookmarks.html"); try { FileWriter bookWriter = new FileWriter(bookmarkWebPage, false); bookWriter.write(bookmarkHtml); @@ -2202,9 +1604,9 @@ public class IncognitoModeActivity extends Activity { } catch (IOException e) { e.printStackTrace(); } - view.loadUrl("file:///" + bookmarkWebPage); + view.loadUrl("file://" + bookmarkWebPage); - if (uBar.isShown()) { + if (urlBar.isShown()) { urlTitle[pageId].setText("Bookmarks"); setUrlText(""); getUrl.setPadding(tenPad, 0, tenPad, 0); @@ -2231,24 +1633,32 @@ public class IncognitoModeActivity extends Activity { switch (item.getItemId()) { case R.id.history: - generateHistory(main[pageId]); + generateHistory(main[pageId], CONTEXT); + return true; + case R.id.bookmark: + if (urlToLoad[pageId][1] != null) { + if (!urlToLoad[pageId][1] + .equals("Bookmarks")) { + Utils.addBookmark(CONTEXT, + urlToLoad[pageId][1], + urlToLoad[pageId][0]); + } + } return true; case R.id.settings: newSettings(); return true; case R.id.allBookmarks: if (urlToLoad[pageId][1] == null) { - goBookmarks(main[pageId]); + goBookmarks(CONTEXT, main[pageId]); } else if (!urlToLoad[pageId][1] .equals("Bookmarks")) { - goBookmarks(main[pageId]); + goBookmarks(CONTEXT, main[pageId]); } return true; case R.id.incognito: - startActivity(new Intent( - FinalVariables.INCOGNITO_INTENT)); - // newTab(number, homepage, true, true); + newTab(number, homepage, true, true); return true; default: return false; @@ -2275,7 +1685,7 @@ public class IncognitoModeActivity extends Activity { }); } - void searchTheWeb(String query) { + static void searchTheWeb(String query, Context context) { query = query.trim(); main[pageId].stopLoading(); @@ -2295,9 +1705,9 @@ public class IncognitoModeActivity extends Activity { boolean isSearch = ((query.contains(" ") || !containsPeriod) && !aboutScheme); if (query.contains("about:home") || query.contains("about:bookmarks")) { - goBookmarks(main[pageId]); + goBookmarks(context, main[pageId]); } else if (query.contains("about:history")) { - generateHistory(main[pageId]); + generateHistory(main[pageId], context); } else if (isSearch) { query.replaceAll(" ", "+"); main[pageId].loadUrl(SEARCH + query); @@ -2307,4 +1717,344 @@ public class IncognitoModeActivity extends Activity { main[pageId].loadUrl(query); } } + + public static void onPageFinished(WebView view, String url) { + if (view.isShown()) { + view.invalidate(); + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + + if (showFullScreen && urlBar.isShown()) { + urlBar.startAnimation(slideUp); + } + } + view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); + Log.i("Lightning", "Page Finished"); + loadTime = System.currentTimeMillis() - loadTime; + Log.i("Lightning", "Load Time: " + loadTime); + } + + public static void onPageStarted(WebView view, String url, Bitmap favicon) { + Log.i("Lightning", "Page Started"); + loadTime = System.currentTimeMillis(); + int numberPage = view.getId(); + + if (url.startsWith("file://")) { + view.getSettings().setUseWideViewPort(false); + } else { + view.getSettings().setUseWideViewPort( + settings.getBoolean("wideviewport", true)); + } + + if (view.isShown()) { + refresh.setVisibility(View.INVISIBLE); + progressBar.setVisibility(View.VISIBLE); + setUrlText(url); + } + + urlTitle[numberPage].setCompoundDrawables(incognitoPage, null, exitTab, + null); + + getUrl.setPadding(tenPad, 0, tenPad, 0); + urlToLoad[numberPage][0] = url; + + if (!urlBar.isShown() && showFullScreen) { + urlBar.startAnimation(slideDown); + } + } + + public static void onCreateWindow(Message resultMsg) { + 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); + } + + public static void onShowCustomView() { + background.removeView(main[pageId]); + urlBar.setVisibility(View.GONE); + } + + public static void onHideCustomView(FrameLayout fullScreenContainer, + CustomViewCallback mCustomViewCallback, int orientation) { + FrameLayout screen = (FrameLayout) ACTIVITY.getWindow().getDecorView(); + screen.removeView(fullScreenContainer); + fullScreenContainer = null; + mCustomViewCallback.onCustomViewHidden(); + ACTIVITY.setRequestedOrientation(orientation); + background.addView(main[pageId]); + urlBar.setVisibility(View.VISIBLE); + urlBar.bringToFront(); + } + + public static void onReceivedTitle(int numberPage, String title) { + if (title != null && title.length() != 0) { + urlTitle[numberPage].setText(title); + urlToLoad[numberPage][1] = title; + } + } + + public static void openFileChooser(ValueCallback uploadMsg) { + mUploadMessage = uploadMsg; + Intent i = new Intent(Intent.ACTION_GET_CONTENT); + i.addCategory(Intent.CATEGORY_OPENABLE); + i.setType("*/*"); + ACTIVITY.startActivityForResult( + Intent.createChooser(i, "File Chooser"), 1); + } + + @Override + public boolean onTouch(View v, MotionEvent event) { + id = v.getId(); + background.clearDisappearingChildren(); + boolean xPress = false; + int x = (int) event.getX(); + int y = (int) event.getY(); + Rect edge = new Rect(); + v.getLocalVisibleRect(edge); + + urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); + if (event.getAction() == MotionEvent.ACTION_UP) { + if (x >= (edge.right - bounds.width() - v.getPaddingRight() - 10 * 3 / 2) + && x <= (edge.right - v.getPaddingRight() + 10 * 3 / 2) + && y >= (v.getPaddingTop() - 10 / 2) + && y <= (v.getHeight() - v.getPaddingBottom() + 10 / 2)) { + xPress = true; + } + if (id == pageId) { + if (xPress) { + deleteTab(id); + urlBar.bringToFront(); + } + } else if (id != pageId) { + if (xPress) { + deleteTab(id); + } else { + if (API < 16) { + urlTitle[pageId].setBackgroundDrawable(inactive); + } else if (API > 15) { + urlTitle[pageId].setBackground(inactive); + } + urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); + if (!showFullScreen) { + background.addView(main[id]); + main[id].startAnimation(fadeIn); + main[pageId].startAnimation(fadeOut); + background.removeView(main[pageId]); + urlBar.bringToFront(); + } else if (API >= 12) { + main[id].setAlpha(0f); + background.addView(main[id]); + try { + main[id].animate().alpha(1f) + .setDuration(mShortAnimationDuration); + } catch (NullPointerException ignored) { + } + background.removeView(main[pageId]); + urlBar.bringToFront(); + } else { + background.removeView(main[pageId]); + background.addView(main[id]); + } + urlBar.bringToFront(); + + pageId = id; + setUrlText(urlToLoad[pageId][0]); + getUrl.setPadding(tenPad, 0, tenPad, 0); + if (API < 16) { + urlTitle[pageId].setBackgroundDrawable(active); + } else if (API > 15) { + urlTitle[pageId].setBackground(active); + } + if (main[pageId].getProgress() < 100) { + refresh.setVisibility(View.INVISIBLE); + progressBar.setVisibility(View.VISIBLE); + } else { + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + } + onProgressChanged(pageId, main[pageId].getProgress()); + tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); + main[pageId].invalidate(); + } + } + + } + urlBar.bringToFront(); + v.setPadding(leftPad, 0, rightPad, 0); + return true; + } + + public static class ClickHandler extends Handler { + + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + String url = null; + url = msg.getData().getString("url"); + handleLongClickOnBookmarks(url, msg.arg1); + } + + } + + public static boolean onLongClick(final int n) { + final HitTestResult result = main[n].getHitTestResult(); + + if (main[n].getUrl().contains( + "file://" + CONTEXT.getFilesDir() + "/bookmarks.html")) { + + Message message = new Message(); + message.arg1 = n; + message.setTarget(new ClickHandler()); + main[n].requestFocusNodeHref(message); + + return true; + } else if (result.getExtra() != null) { + if (result.getType() == 5 && API > 8) { + DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: { + int num = pageId; + newTab(number, result.getExtra(), false, false); + // urlTitle[num].performClick(); + pageId = num; + break; + } + case DialogInterface.BUTTON_NEGATIVE: { + main[n].loadUrl(result.getExtra()); + break; + } + case DialogInterface.BUTTON_NEUTRAL: { + if (API > 8) { + String url = result.getExtra(); + + Utils.downloadFile(CONTEXT, url, null, null); + + } + break; + } + } + } + }; + + AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); // dialog + builder.setMessage("What would you like to do with this image?") + .setPositiveButton("Open in New Tab", + dialogClickListener) + .setNegativeButton("Open Normally", dialogClickListener) + .setNeutralButton("Download Image", dialogClickListener) + .show(); + + } else { + DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: { + int num = pageId; + newTab(number, result.getExtra(), false, false); + pageId = num; + break; + } + case DialogInterface.BUTTON_NEGATIVE: { + main[n].loadUrl(result.getExtra()); + break; + } + case DialogInterface.BUTTON_NEUTRAL: { + + if (API < 11) { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ACTIVITY + .getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setText(result.getExtra()); + } else { + ClipboardManager clipboard = (ClipboardManager) ACTIVITY + .getSystemService(CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("label", + result.getExtra()); + clipboard.setPrimaryClip(clip); + } + break; + } + } + } + }; + + AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); // dialog + builder.setTitle(result.getExtra()).setMessage("What do you want to do with this link?") + .setPositiveButton("Open in New Tab", + dialogClickListener) + .setNegativeButton("Open Normally", dialogClickListener) + .setNeutralButton("Copy link", dialogClickListener) + .show(); + } + return true; + } else { + return false; + } + } + + public static void handleLongClickOnBookmarks(final String clickedURL, + final int n) { + if (clickedURL != null) { + + DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: { + int num = pageId; + newTab(number, clickedURL, false, false); + // urlTitle[num].performClick(); + pageId = num; + break; + } + case DialogInterface.BUTTON_NEGATIVE: { + main[n].loadUrl(clickedURL); + break; + } + case DialogInterface.BUTTON_NEUTRAL: { + deleteBookmark(clickedURL); + break; + } + } + } + }; + + AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); // dialog + builder.setMessage("What would you like to do with this bookmark?") + .setPositiveButton("Open in New Tab", dialogClickListener) + .setNegativeButton("Open Normally", dialogClickListener) + .setNeutralButton("Delete", dialogClickListener).show(); + } + } + + public static void goBack() { + if (main[pageId].isShown() && main[pageId].canGoBack()) { + main[pageId].goBack(); + } + } + + public static void goForward() { + if (main[pageId].isShown() && main[pageId].canGoForward()) { + main[pageId].goForward(); + } + } + public static void onProgressChanged(int id, int progress) { + if (id == pageId) { + browserProgress.setProgress(progress); + if (progress < 100) { + browserProgress.setVisibility(View.VISIBLE); + } else { + browserProgress.setVisibility(View.GONE); + } + } + } } \ No newline at end of file diff --git a/src/acr/browser/barebones/activities/SettingsActivity.java b/src/acr/browser/barebones/activities/SettingsActivity.java index 03c2fd2..fe02977 100644 --- a/src/acr/browser/barebones/activities/SettingsActivity.java +++ b/src/acr/browser/barebones/activities/SettingsActivity.java @@ -1,9 +1,6 @@ package acr.browser.barebones.activities; import acr.browser.barebones.R; -import acr.browser.barebones.R.drawable; -import acr.browser.barebones.R.id; -import acr.browser.barebones.R.layout; import acr.browser.barebones.utilities.FinalVariables; import acr.browser.barebones.utilities.Utils; import android.net.Uri; @@ -19,23 +16,21 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.graphics.Color; import android.util.Log; +import android.util.TypedValue; import android.view.View; +import android.view.WindowManager; import android.view.View.OnClickListener; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.EditText; import android.widget.ImageView; -import android.widget.RadioButton; -import android.widget.RadioGroup; +import android.widget.LinearLayout; import android.widget.RelativeLayout; -import android.widget.ScrollView; import android.widget.Switch; import android.widget.TextView; -import android.widget.Toast; public class SettingsActivity extends Activity { static int API = FinalVariables.API; @@ -44,6 +39,7 @@ public class SettingsActivity extends Activity { static int agentChoice; static String homepage; static TextView agentText; + static String agent; static TextView download; static int egg = 0; static String downloadLocation; @@ -55,6 +51,7 @@ public class SettingsActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.settings); + init(); } @@ -62,6 +59,10 @@ public class SettingsActivity extends Activity { public void init() { // settings storage settings = getSharedPreferences(preferences, 0); + if (settings.getBoolean("hidestatus", false)) { + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + } edit = settings.edit(); // initialize UI @@ -91,6 +92,9 @@ public class SettingsActivity extends Activity { case 6: searchText.setText("Baidu"); break; + case 7: + searchText.setText("Yandex"); + break; } back.setBackgroundResource(R.drawable.button); @@ -104,9 +108,10 @@ public class SettingsActivity extends Activity { agentChoice = settings.getInt("agentchoose", 1); homepage = settings.getString("home", FinalVariables.HOMEPAGE); downloadLocation = settings.getString("download", - FinalVariables.DOWNLOAD_LOCATION); + Environment.DIRECTORY_DOWNLOADS); - download.setText(downloadLocation); + download.setText(FinalVariables.EXTERNAL_STORAGE + "/" + + downloadLocation); String code = "HOLO"; @@ -133,13 +138,19 @@ public class SettingsActivity extends Activity { switch (agentChoice) { case 1: agentText.setText("Default"); + agent = BrowserActivity.defaultUser; break; case 2: agentText.setText("Desktop"); + agent = FinalVariables.DESKTOP_USER_AGENT; break; case 3: agentText.setText("Mobile"); + agent = FinalVariables.MOBILE_USER_AGENT; break; + case 4: + agentText.setText("Custom"); + agent = settings.getString("userAgentString", BrowserActivity.defaultUser); } RelativeLayout r1, r2, r3; r1 = (RelativeLayout) findViewById(R.id.setR1); @@ -214,7 +225,7 @@ public class SettingsActivity extends Activity { SettingsActivity.this); picker.setTitle("Search Engine"); CharSequence[] chars = { "Google (Suggested)", "Bing", "Yahoo", - "StartPage", "DuckDuckGo (Privacy)" ,"Baidu"}; + "StartPage", "DuckDuckGo (Privacy)" , "Baidu (Chinese)", "Yandex (Russian)"}; int n = settings.getInt("search", 1); @@ -245,6 +256,9 @@ public class SettingsActivity extends Activity { case 6: searchText.setText("Baidu"); break; + case 7: + searchText.setText("Yandex"); + break; } } }); @@ -329,9 +343,8 @@ public class SettingsActivity extends Activity { public void onClick(View v) { egg++; if (egg == 10) { - startActivity(new Intent( - Intent.ACTION_VIEW, - Uri.parse("http://imgs.xkcd.com/comics/compiling.png"))); + startActivity(new Intent(Intent.ACTION_VIEW, Uri + .parse("http://imgs.xkcd.com/comics/compiling.png"))); finish(); egg = 0; } @@ -502,12 +515,20 @@ public class SettingsActivity extends Activity { switch (which + 1) { case 1: agentText.setText("Default"); + agent = BrowserActivity.defaultUser; break; case 2: agentText.setText("Desktop"); + agent = FinalVariables.DESKTOP_USER_AGENT; break; case 3: agentText.setText("Mobile"); + agent = FinalVariables.MOBILE_USER_AGENT; + break; + case 4: + agentText.setText("Custom"); + agent = settings.getString("userAgentString", BrowserActivity.defaultUser); + agentPicker(); break; } } @@ -538,6 +559,27 @@ public class SettingsActivity extends Activity { }); } + + public void agentPicker() { + final AlertDialog.Builder agentStringPicker = new AlertDialog.Builder( + SettingsActivity.this); + + agentStringPicker.setTitle("Custom Agent"); + final EditText getAgent = new EditText(SettingsActivity.this); + agentStringPicker.setView(getAgent); + agentStringPicker.setPositiveButton("OK", + new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which) { + String text = getAgent.getText().toString(); + edit.putString("userAgentString", text); + edit.commit(); + agentText.setText("Custom"); + } + }); + agentStringPicker.show(); + } public void download(RelativeLayout view) { view.setOnClickListener(new OnClickListener() { @@ -550,9 +592,9 @@ public class SettingsActivity extends Activity { picker.setTitle("Download Location"); CharSequence[] chars = { "Default", "Custom" }; downloadLocation = settings.getString("download", - FinalVariables.DOWNLOAD_LOCATION); + Environment.DIRECTORY_DOWNLOADS); int n = -1; - if (downloadLocation.contains(FinalVariables.DOWNLOAD_LOCATION)) { + if (downloadLocation.contains(Environment.DIRECTORY_DOWNLOADS)) { n = 1; } else { n = 2; @@ -568,9 +610,11 @@ public class SettingsActivity extends Activity { switch (which + 1) { case 1: edit.putString("download", - FinalVariables.DOWNLOAD_LOCATION); + Environment.DIRECTORY_DOWNLOADS); edit.commit(); - download.setText(FinalVariables.DOWNLOAD_LOCATION); + download.setText(FinalVariables.EXTERNAL_STORAGE + + "/" + + Environment.DIRECTORY_DOWNLOADS); break; case 2: downPicker(); @@ -620,15 +664,42 @@ public class SettingsActivity extends Activity { homePicker.show(); } + @SuppressWarnings("deprecation") public void downPicker() { final AlertDialog.Builder downLocationPicker = new AlertDialog.Builder( SettingsActivity.this); + LinearLayout layout = new LinearLayout(this); downLocationPicker.setTitle("Custom Location"); final EditText getDownload = new EditText(SettingsActivity.this); + getDownload.setBackgroundResource(0); downloadLocation = settings.getString("download", - FinalVariables.DOWNLOAD_LOCATION); + Environment.DIRECTORY_DOWNLOADS); + int padding = Utils.convertDensityPixesl(this, 10); + + LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.MATCH_PARENT); + + getDownload.setLayoutParams(lparams); + getDownload.setTextColor(Color.DKGRAY); getDownload.setText(downloadLocation); - downLocationPicker.setView(getDownload); + getDownload.setPadding(0, padding, padding, padding); + + TextView v = new TextView(this); + v.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); + v.setTextColor(Color.DKGRAY); + v.setText(FinalVariables.EXTERNAL_STORAGE + "/"); + v.setPadding(padding, padding, 0, padding); + layout.addView(v); + layout.addView(getDownload); + if (API < 16) { + layout.setBackgroundDrawable(getResources().getDrawable( + android.R.drawable.edit_text)); + } else { + layout.setBackground(getResources().getDrawable( + android.R.drawable.edit_text)); + } + downLocationPicker.setView(layout); downLocationPicker.setPositiveButton("OK", new DialogInterface.OnClickListener() { @@ -637,7 +708,8 @@ public class SettingsActivity extends Activity { String text = getDownload.getText().toString(); edit.putString("download", text); edit.commit(); - download.setText(text); + download.setText(FinalVariables.EXTERNAL_STORAGE + "/" + + text); } }); downLocationPicker.show(); @@ -708,7 +780,7 @@ public class SettingsActivity extends Activity { @Override public void onClick(View v) { startActivity(new Intent( - "android.intent.action.ADVANCEDSETTINGS")); + FinalVariables.ADVANCED_SETTINGS_INTENT)); } }); diff --git a/src/acr/browser/barebones/customwebview/CustomWebView.java b/src/acr/browser/barebones/customwebview/CustomWebView.java index 9697edf..bbea647 100644 --- a/src/acr/browser/barebones/customwebview/CustomWebView.java +++ b/src/acr/browser/barebones/customwebview/CustomWebView.java @@ -1,59 +1,95 @@ package acr.browser.barebones.customwebview; -import java.lang.reflect.Method; -import acr.browser.barebones.activities.BarebonesActivity; +import acr.browser.barebones.activities.BrowserActivity; import acr.browser.barebones.utilities.FinalVariables; import android.content.Context; -import android.util.Log; +import android.graphics.Point; +import android.util.DisplayMetrics; +import android.view.Display; +import android.view.GestureDetector; +import android.view.GestureDetector.SimpleOnGestureListener; import android.view.MotionEvent; import android.view.View; +import android.view.WindowManager; import android.view.animation.Animation; +import android.webkit.WebSettings; import android.webkit.WebView; -import android.widget.ZoomButtonsController; public final class CustomWebView extends WebView { private float location; private boolean first = false; final int API = FinalVariables.API; - final boolean showFullScreen = BarebonesActivity.showFullScreen; - final View uBar = BarebonesActivity.uBar; - final Animation slideUp = BarebonesActivity.slideUp; - final Animation slideDown = BarebonesActivity.slideDown; - private ZoomButtonsController zoomControl; - private boolean zoomShouldDie = false; + final boolean showFullScreen = BrowserActivity.showFullScreen; + final View uBar = BrowserActivity.uBar; + final Animation slideUp = BrowserActivity.slideUp; + final Animation slideDown = BrowserActivity.slideDown; + static Context CONTEXT; public CustomWebView(Context context) { super(context); - this.setBackgroundResource(0); - - //getControls(); + mGestureDetector = new GestureDetector(context, + new CustomGestureListener()); + CONTEXT = context; + WebSettings settings = this.getSettings(); + browserInitialization(context); + settingsInitialization(context, settings); + } + + public void browserInitialization(Context context) { + this.setDrawingCacheBackgroundColor(0x00000000); + this.setFocusableInTouchMode(true); + this.setFocusable(true); + this.setAnimationCacheEnabled(false); + this.setDrawingCacheEnabled(true); + this.setBackgroundColor(context.getResources().getColor( + android.R.color.white)); + this.setWillNotCacheDrawing(false); + this.setAlwaysDrawnWithCacheEnabled(true); + this.setScrollbarFadingEnabled(true); + this.setSaveEnabled(true); + } + + @SuppressWarnings("deprecation") + public void settingsInitialization(Context context, WebSettings settings) { + settings.setDomStorageEnabled(true); + settings.setAppCacheEnabled(true); + settings.setAppCachePath(context.getFilesDir().getAbsolutePath() + + "/cache"); + if (API < 18) { + settings.setLightTouchEnabled(true); + } + settings.setAllowFileAccess(true); + settings.setDatabaseEnabled(true); + settings.setDatabasePath(context.getFilesDir().getAbsolutePath() + + "/databases"); + settings.setSupportZoom(true); + settings.setBuiltInZoomControls(true); + if (API >= 11) { + settings.setDisplayZoomControls(false); + settings.setAllowContentAccess(true); + } } @Override public boolean onTouchEvent(MotionEvent event) { - - /*if (zoomShouldDie) { - try { - zoomControl.getZoomControls().setVisibility(View.INVISIBLE); - } catch (IllegalArgumentException ignored) { - } - }*/ + switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { first = true; - if (API <= 10 && !this.hasFocus()) { - this.requestFocus(); + if (API <= 10 && !hasFocus()) { + requestFocus(); } location = event.getY(); break; } case MotionEvent.ACTION_UP: { + if (showFullScreen && first) { - if (uBar.isShown() && this.getScrollY() < 5) { + if (uBar.isShown() && getScrollY() < 5) { uBar.startAnimation(slideUp); - } else if (event.getY() > location && !uBar.isShown()) { + } else if ((event.getY() - location) > 20.0 && !uBar.isShown()) { uBar.startAnimation(slideDown); - } else if (event.getY() < location && uBar.isShown()) { + } else if ((event.getY() - location) < -20.0 && uBar.isShown()) { uBar.startAnimation(slideUp); } first = false; @@ -61,33 +97,67 @@ public final class CustomWebView extends WebView { break; } } - + mGestureDetector.onTouchEvent(event); return super.onTouchEvent(event); } @Override protected void onWindowVisibilityChanged(int visibility) { - if(API >= 11){ + if (API >= 11) { this.setActivated(visibility == View.VISIBLE); } + this.setEnabled(visibility == View.VISIBLE); super.onWindowVisibilityChanged(visibility); } -/* - private void getControls() { - if (API < 11) { + + private final GestureDetector mGestureDetector; + + private class CustomGestureListener extends SimpleOnGestureListener { + private final int SWIPE_THRESHOLD = 100; + private final int SWIPE_VELOCITY_THRESHOLD = 100; + + @Override + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, + float velocityY) { try { - Class webview = Class.forName("android.webkit.WebView"); - Method method = webview.getMethod("getZoomButtonsController"); - - zoomControl = (ZoomButtonsController) method.invoke(this, (Object[])null); - if (zoomControl != null) { - zoomShouldDie = true; + + int width; + if (API < 13) { + DisplayMetrics metrics = CONTEXT.getResources() + .getDisplayMetrics(); + width = metrics.widthPixels; + } else { + WindowManager wm = (WindowManager) CONTEXT + .getSystemService(Context.WINDOW_SERVICE); + Display display = wm.getDefaultDisplay(); + Point size = new Point(); + display.getSize(size); + width = size.x; } - } catch (Exception e) { - e.printStackTrace(); + + if ((width - e1.getX() < width/12) || (e1.getX() < width/12)) { + float diffY = e2.getY() - e1.getY(); + float diffX = e2.getX() - e1.getX(); + if (Math.abs(diffX) > Math.abs(diffY)) { + if (Math.abs(diffX) > SWIPE_THRESHOLD + && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { + if (diffX > 0) { + BrowserActivity.goBack(); + return false; + } else { + BrowserActivity.goForward(); + return false; + } + } + } + } + + } catch (Exception exception) { + exception.printStackTrace(); } + return false; } } -*/ + } diff --git a/src/acr/browser/barebones/customwebview/IncognitoWebView.java b/src/acr/browser/barebones/customwebview/IncognitoWebView.java index 1b5cbfe..57342d0 100644 --- a/src/acr/browser/barebones/customwebview/IncognitoWebView.java +++ b/src/acr/browser/barebones/customwebview/IncognitoWebView.java @@ -3,9 +3,16 @@ package acr.browser.barebones.customwebview; import acr.browser.barebones.activities.IncognitoModeActivity; import acr.browser.barebones.utilities.FinalVariables; import android.content.Context; +import android.graphics.Point; +import android.util.DisplayMetrics; +import android.view.Display; +import android.view.GestureDetector; +import android.view.GestureDetector.SimpleOnGestureListener; import android.view.MotionEvent; import android.view.View; +import android.view.WindowManager; import android.view.animation.Animation; +import android.webkit.WebSettings; import android.webkit.WebView; public final class IncognitoWebView extends WebView { @@ -13,34 +20,76 @@ public final class IncognitoWebView extends WebView { private boolean first = false; final int API = FinalVariables.API; final boolean showFullScreen = IncognitoModeActivity.showFullScreen; - final View uBar = IncognitoModeActivity.uBar; + final View uBar = IncognitoModeActivity.urlBar; final Animation slideUp = IncognitoModeActivity.slideUp; final Animation slideDown = IncognitoModeActivity.slideDown; - + static Context CONTEXT; public IncognitoWebView(Context context) { super(context); + mGestureDetector = new GestureDetector(context, + new CustomGestureListener()); + CONTEXT = context; + WebSettings settings = this.getSettings(); + browserInitialization(context); + settingsInitialization(context, settings); + } + + public void browserInitialization(Context context) { + this.setDrawingCacheBackgroundColor(0x00000000); + this.setFocusableInTouchMode(true); + this.setFocusable(true); + this.setAnimationCacheEnabled(false); + this.setDrawingCacheEnabled(true); + this.setBackgroundColor(context.getResources().getColor( + android.R.color.white)); + this.setWillNotCacheDrawing(false); + this.setAlwaysDrawnWithCacheEnabled(true); + this.setScrollbarFadingEnabled(true); + this.setSaveEnabled(true); + } + + @SuppressWarnings("deprecation") + public void settingsInitialization(Context context, WebSettings settings) { + settings.setDomStorageEnabled(true); + settings.setAppCacheEnabled(true); + settings.setAppCachePath(context.getFilesDir().getAbsolutePath() + + "/cache"); + if (API < 18) { + settings.setLightTouchEnabled(true); + } + settings.setAllowFileAccess(true); + settings.setDatabaseEnabled(true); + settings.setDatabasePath(context.getFilesDir().getAbsolutePath() + + "/databases"); + settings.setSupportZoom(true); + settings.setBuiltInZoomControls(true); + if (API >= 11) { + settings.setDisplayZoomControls(false); + settings.setAllowContentAccess(true); + } } @Override public boolean onTouchEvent(MotionEvent event) { - + switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { first = true; - if (API <= 10 && !this.hasFocus()) { - this.requestFocus(); + if (API <= 10 && !hasFocus()) { + requestFocus(); } location = event.getY(); break; } case MotionEvent.ACTION_UP: { + if (showFullScreen && first) { - if (uBar.isShown() && this.getScrollY() < 5) { + if (uBar.isShown() && getScrollY() < 5) { uBar.startAnimation(slideUp); - } else if (event.getY() > location && !uBar.isShown()) { + } else if ((event.getY() - location) > 20.0 && !uBar.isShown()) { uBar.startAnimation(slideDown); - } else if (event.getY() < location && uBar.isShown()) { + } else if ((event.getY() - location) < -20.0 && uBar.isShown()) { uBar.startAnimation(slideUp); } first = false; @@ -48,8 +97,67 @@ public final class IncognitoWebView extends WebView { break; } } + return mGestureDetector.onTouchEvent(event) + || super.onTouchEvent(event); - return super.onTouchEvent(event); + } + + @Override + protected void onWindowVisibilityChanged(int visibility) { + if (API >= 11) { + this.setActivated(visibility == View.VISIBLE); + } + this.setEnabled(visibility == View.VISIBLE); + super.onWindowVisibilityChanged(visibility); + } + + private final GestureDetector mGestureDetector; + + private class CustomGestureListener extends SimpleOnGestureListener { + private final int SWIPE_THRESHOLD = 100; + private final int SWIPE_VELOCITY_THRESHOLD = 100; + + @Override + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, + float velocityY) { + try { + + int width; + if (API < 13) { + DisplayMetrics metrics = CONTEXT.getResources() + .getDisplayMetrics(); + width = metrics.widthPixels; + } else { + WindowManager wm = (WindowManager) CONTEXT + .getSystemService(Context.WINDOW_SERVICE); + Display display = wm.getDefaultDisplay(); + Point size = new Point(); + display.getSize(size); + width = size.x; + } + + if ((width - e1.getX() < width/12) || (e1.getX() < width/12)) { + float diffY = e2.getY() - e1.getY(); + float diffX = e2.getX() - e1.getX(); + if (Math.abs(diffX) > Math.abs(diffY)) { + if (Math.abs(diffX) > SWIPE_THRESHOLD + && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { + if (diffX > 0) { + IncognitoModeActivity.goBack(); + return false; + } else { + IncognitoModeActivity.goForward(); + return false; + } + } + } + } + + } catch (Exception exception) { + exception.printStackTrace(); + } + return false; + } } } diff --git a/src/acr/browser/barebones/incognitoclasses/IncognitoChromeClient.java b/src/acr/browser/barebones/incognitoclasses/IncognitoChromeClient.java new file mode 100644 index 0000000..36e28e2 --- /dev/null +++ b/src/acr/browser/barebones/incognitoclasses/IncognitoChromeClient.java @@ -0,0 +1,216 @@ +package acr.browser.barebones.incognitoclasses; + +import acr.browser.barebones.R; +import acr.browser.barebones.activities.IncognitoModeActivity; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Message; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.GeolocationPermissions; +import android.webkit.ValueCallback; +import android.webkit.WebChromeClient; +import android.webkit.WebView; +import android.webkit.WebStorage.QuotaUpdater; +import android.widget.FrameLayout; + +@SuppressLint("SetJavaScriptEnabled") +public class IncognitoChromeClient extends WebChromeClient { + private static Context context; + private static Activity browserActivity; + private static View mCustomView; + private static CustomViewCallback mCustomViewCallback; + public IncognitoChromeClient(IncognitoModeActivity activity){ + context = activity; + browserActivity = activity; + } + public Bitmap mDefaultVideoPoster; + public View mVideoProgressView; + public FrameLayout fullScreenContainer; + public int orientation; + + @Override + public void onExceededDatabaseQuota(String url, + String databaseIdentifier, long quota, + long estimatedDatabaseSize, long totalQuota, + QuotaUpdater quotaUpdater) { + quotaUpdater.updateQuota(totalQuota + estimatedDatabaseSize); + + } + + @Override + public void onProgressChanged(WebView view, int newProgress) { + IncognitoModeActivity.onProgressChanged(view.getId(), newProgress); + super.onProgressChanged(view, newProgress); + } + + @Override + public void onReachedMaxAppCacheSize(long requiredStorage, long quota, + QuotaUpdater quotaUpdater) { + quotaUpdater.updateQuota(quota + requiredStorage); + } + + @Override + public Bitmap getDefaultVideoPoster() { + if (mDefaultVideoPoster == null) { + mDefaultVideoPoster = BitmapFactory.decodeResource( + context.getResources(), android.R.color.black); + } + return mDefaultVideoPoster; + } + + @Override + public View getVideoLoadingProgressView() { + if (mVideoProgressView == null) { + LayoutInflater inflater = LayoutInflater.from(context); + mVideoProgressView = inflater.inflate( + android.R.layout.simple_spinner_item, null); + } + return mVideoProgressView; + } + + @Override + public void onCloseWindow(WebView window) { + Message msg = Message.obtain(); + msg.what = 3; + msg.arg1 = window.getId(); + IncognitoModeActivity.browserHandler.sendMessage(msg); + super.onCloseWindow(window); + } + + @Override + public boolean onCreateWindow(WebView view, boolean isDialog, + boolean isUserGesture, final Message resultMsg) { + + if (isUserGesture) { + IncognitoModeActivity.onCreateWindow(resultMsg); + } + return true; + } + + + @Override + public void onGeolocationPermissionsShowPrompt(final String origin, + final GeolocationPermissions.Callback callback) { + final boolean remember = true; + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Location Access"); + String org = null; + if (origin.length() > 50) { + org = (String) origin.subSequence(0, 50) + "..."; + } else { + org = origin; + } + builder.setMessage(org + "\nWould like to use your Location ") + .setCancelable(true) + .setPositiveButton("Allow", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + callback.invoke(origin, true, remember); + } + }) + .setNegativeButton("Don't Allow", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + callback.invoke(origin, false, remember); + } + }); + AlertDialog alert = builder.create(); + alert.show(); + + } + + @Override + public void onHideCustomView() { + if (mCustomView == null && mCustomViewCallback == null) { + return; + } + mCustomView = null; + mCustomView.setKeepScreenOn(false); + IncognitoModeActivity.onHideCustomView(fullScreenContainer, mCustomViewCallback, orientation); + } + + @Override + public void onReceivedIcon(WebView view, Bitmap favicon) { + IncognitoModeActivity.setFavicon(view.getId(), favicon); + } + + @Override + public void onReceivedTitle(final WebView view, final String title) { + IncognitoModeActivity.onReceivedTitle(view.getId(), title); + super.onReceivedTitle(view, title); + } + + @Override + public void onShowCustomView(View view, int requestedOrientation, + CustomViewCallback callback) { + if (mCustomView != null) { + callback.onCustomViewHidden(); + return; + } + view.setKeepScreenOn(true); + orientation = browserActivity.getRequestedOrientation(); + FrameLayout screen = (FrameLayout) browserActivity.getWindow().getDecorView(); + fullScreenContainer = new FrameLayout(context); + fullScreenContainer.setBackgroundColor(context.getResources().getColor( + R.color.black)); + IncognitoModeActivity.onShowCustomView(); + fullScreenContainer.addView(view, + ViewGroup.LayoutParams.MATCH_PARENT); + screen.addView(fullScreenContainer, + ViewGroup.LayoutParams.MATCH_PARENT); + mCustomView = view; + mCustomViewCallback = callback; + browserActivity.setRequestedOrientation(requestedOrientation); + + } + + @Override + public void onShowCustomView(View view, + WebChromeClient.CustomViewCallback callback) { + if (mCustomView != null) { + callback.onCustomViewHidden(); + return; + } + view.setKeepScreenOn(true); + orientation = browserActivity.getRequestedOrientation(); + FrameLayout screen = (FrameLayout) browserActivity.getWindow().getDecorView(); + fullScreenContainer = new FrameLayout(context); + fullScreenContainer.setBackgroundColor(context.getResources().getColor( + R.color.black)); + IncognitoModeActivity.onShowCustomView(); + fullScreenContainer.addView(view, + ViewGroup.LayoutParams.MATCH_PARENT); + screen.addView(fullScreenContainer, + ViewGroup.LayoutParams.MATCH_PARENT); + mCustomView = view; + mCustomViewCallback = callback; + browserActivity.setRequestedOrientation(browserActivity.getRequestedOrientation()); + } + + public void openFileChooser(ValueCallback uploadMsg) { + IncognitoModeActivity.openFileChooser(uploadMsg); + } + + public void openFileChooser(ValueCallback uploadMsg, + String acceptType) { + IncognitoModeActivity.openFileChooser(uploadMsg); + } + + public void openFileChooser(ValueCallback uploadMsg, + String acceptType, String capture) { + IncognitoModeActivity.openFileChooser(uploadMsg); + } + +} diff --git a/src/acr/browser/barebones/incognitoclasses/IncognitoDownloadListener.java b/src/acr/browser/barebones/incognitoclasses/IncognitoDownloadListener.java new file mode 100644 index 0000000..459bf8f --- /dev/null +++ b/src/acr/browser/barebones/incognitoclasses/IncognitoDownloadListener.java @@ -0,0 +1,60 @@ +package acr.browser.barebones.incognitoclasses; + +import acr.browser.barebones.activities.IncognitoModeActivity; +import acr.browser.barebones.utilities.Utils; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; +import android.webkit.DownloadListener; + +public class IncognitoDownloadListener implements DownloadListener { + private static Context context; + public IncognitoDownloadListener(IncognitoModeActivity activity){ + context = activity; + } + @Override + public void onDownloadStart(final String url, String userAgent, + final String contentDisposition, final String mimetype, + long contentLength) { + if (url.endsWith(".mp4") || url.endsWith(".m4a")) { + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Open as..."); + builder.setMessage( + "Do you want to download this video or watch it in an app?") + .setCancelable(true) + .setPositiveButton("Download", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + Utils.downloadFile(context, url, + contentDisposition, mimetype); + } + }) + .setNegativeButton("Watch", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + Intent intent = new Intent( + Intent.ACTION_VIEW); + intent.setDataAndType(Uri.parse(url), + "video/mp4"); + intent.putExtra( + "acr.browser.barebones.Download", + 1); + context.startActivity(intent); + } + }); + AlertDialog alert = builder.create(); + alert.show(); + + } else { + Utils.downloadFile(context, url, contentDisposition, mimetype); + } + } + +} diff --git a/src/acr/browser/barebones/incognitoclasses/IncognitoLongClickListener.java b/src/acr/browser/barebones/incognitoclasses/IncognitoLongClickListener.java new file mode 100644 index 0000000..5e1798e --- /dev/null +++ b/src/acr/browser/barebones/incognitoclasses/IncognitoLongClickListener.java @@ -0,0 +1,14 @@ +package acr.browser.barebones.incognitoclasses; + +import acr.browser.barebones.activities.IncognitoModeActivity; +import android.view.View; +import android.view.View.OnLongClickListener; + +public class IncognitoLongClickListener implements OnLongClickListener{ + + @Override + public boolean onLongClick(View v) { + return IncognitoModeActivity.onLongClick(v.getId()); + } + +} diff --git a/src/acr/browser/barebones/incognitoclasses/IncognitoWebViewClient.java b/src/acr/browser/barebones/incognitoclasses/IncognitoWebViewClient.java new file mode 100644 index 0000000..390fc14 --- /dev/null +++ b/src/acr/browser/barebones/incognitoclasses/IncognitoWebViewClient.java @@ -0,0 +1,202 @@ +package acr.browser.barebones.incognitoclasses; + +import acr.browser.barebones.activities.IncognitoModeActivity; +import acr.browser.barebones.utilities.Utils; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.graphics.Bitmap; +import android.net.MailTo; +import android.net.Uri; +import android.net.http.SslError; +import android.os.Message; +import android.text.InputType; +import android.text.TextUtils; +import android.text.method.PasswordTransformationMethod; +import android.util.Log; +import android.webkit.HttpAuthHandler; +import android.webkit.SslErrorHandler; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.EditText; +import android.widget.LinearLayout; + +public class IncognitoWebViewClient extends WebViewClient { + private static Context context; + public IncognitoWebViewClient(IncognitoModeActivity browserActivity){ + context = browserActivity; + } + + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + if (url.startsWith("market://") + || url.startsWith("http://play.google.com") + || url.startsWith("https://play.google.com")) { + Intent urlIntent = new Intent(Intent.ACTION_VIEW, + Uri.parse(url)); + urlIntent.putExtra("acr.browser.barebones.Origin", + view.getId() + 1); + context.startActivity(urlIntent); + return true; + } else if (url.startsWith("http://www.youtube.com") + || url.startsWith("https://www.youtube.com")) { + Intent urlIntent = new Intent(Intent.ACTION_VIEW, + Uri.parse(url)); + urlIntent.putExtra("acr.browser.barebones.Origin", + view.getId() + 1); + context.startActivity(urlIntent); + return true; + } else if (url.startsWith("http://maps.google.com") + || url.startsWith("https://maps.google.com")) { + Intent urlIntent = new Intent(Intent.ACTION_VIEW, + Uri.parse(url)); + urlIntent.putExtra("acr.browser.barebones.Origin", + view.getId() + 1); + context.startActivity(urlIntent); + return true; + } else if (url.contains("tel:") || TextUtils.isDigitsOnly(url)) { + context.startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url))); + return true; + } else if (url.contains("mailto:")) { + MailTo mailTo = MailTo.parse(url); + Intent i = Utils.newEmailIntent(context, + mailTo.getTo(), mailTo.getSubject(), mailTo.getBody(), + mailTo.getCc()); + context.startActivity(i); + view.reload(); + return true; + } + return super.shouldOverrideUrlLoading(view, url); + } + + @Override + public void onReceivedHttpAuthRequest(final WebView view, + final HttpAuthHandler handler, final String host, + final String realm) { + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + final EditText name = new EditText(context); + final EditText password = new EditText(context); + LinearLayout passLayout = new LinearLayout(context); + passLayout.setOrientation(LinearLayout.VERTICAL); + + passLayout.addView(name); + passLayout.addView(password); + + name.setHint("Username"); + password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); + password.setTransformationMethod(new PasswordTransformationMethod()); + password.setHint("Password"); + builder.setTitle("Sign in"); + builder.setView(passLayout); + builder.setCancelable(true) + .setPositiveButton("Sign in", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + String user = name.getText().toString(); + String pass = password.getText().toString(); + handler.proceed(user.trim(), pass.trim()); + Log.i("Lightning", "Request Login"); + + } + }) + .setNegativeButton("Cancel", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + handler.cancel(); + + } + }); + AlertDialog alert = builder.create(); + alert.show(); + + } + + @Override + public void onScaleChanged(WebView view, float oldScale, float newScale) { + if (view.isShown()) { + view.invalidate(); + } + super.onScaleChanged(view, oldScale, newScale); + } + + @Override + public void onPageFinished(WebView view, String url) { + IncognitoModeActivity.onPageFinished(view, url); + super.onPageFinished(view, url); + } + + @Override + public void onPageStarted(WebView view, String url, Bitmap favicon) { + IncognitoModeActivity.onPageStarted(view, url, favicon); + super.onPageStarted(view, url, favicon); + } + + @Override + 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(); + if (error.getPrimaryError() == SslError.SSL_UNTRUSTED) { + alert.show(); + } else { + handler.proceed(); + } + + } + + @Override + 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); + } +} diff --git a/src/acr/browser/barebones/utilities/BookmarkPageVariables.java b/src/acr/browser/barebones/utilities/BookmarkPageVariables.java index a029fe9..9acc39a 100644 --- a/src/acr/browser/barebones/utilities/BookmarkPageVariables.java +++ b/src/acr/browser/barebones/utilities/BookmarkPageVariables.java @@ -17,7 +17,7 @@ public class BookmarkPageVariables { public static final String Part1 = "

" + "
" + "

" + ""+ - ""; public static final String Part4 = "

"; public static final String End = ""; diff --git a/src/acr/browser/barebones/utilities/FinalVariables.java b/src/acr/browser/barebones/utilities/FinalVariables.java index b257308..0edc8d7 100644 --- a/src/acr/browser/barebones/utilities/FinalVariables.java +++ b/src/acr/browser/barebones/utilities/FinalVariables.java @@ -15,13 +15,13 @@ public class FinalVariables { public static final String GOOGLE_SEARCH = "https://www.google.com/search?client=lightning&q="; public static final String BING_SEARCH = "http://www.bing.com/search?q="; public static final String DUCK_SEARCH = "https://duckduckgo.com/?t=lightning&q="; - public static final String BAIDU_SEARCH = "http://www.baidu.com/s?wd="; public static final String STARTPAGE_SEARCH = "https://startpage.com/do/metasearch.pl?language=english&cat=web&query="; public static final String HOMEPAGE = "https://www.google.com/"; + public static final String BAIDU_SEARCH = "http://www.baidu.com/s?wd="; + public static final String YANDEX_SEARCH = "http://yandex.ru/yandsearch?lr=21411&text="; + public static final String ADVANCED_SETTINGS_INTENT = "android.intent.action.ADVANCED_SETTINGS"; public static final String SETTINGS_INTENT = "android.intent.action.SETTINGS"; - public static final String INCOGNITO_INTENT = "android.intent.action.BAREBONESINCOGNITO"; - public static final String DOWNLOAD_LOCATION = Environment.getExternalStorageDirectory().toString()+"/"+Environment.DIRECTORY_DOWNLOADS; - - + public static final String INCOGNITO_INTENT = "android.intent.action.BROWSER_INCOGNITO"; + public static final String EXTERNAL_STORAGE = Environment.getExternalStorageDirectory().toString(); } diff --git a/src/acr/browser/barebones/utilities/Utils.java b/src/acr/browser/barebones/utilities/Utils.java index 1d35313..0d40dfe 100644 --- a/src/acr/browser/barebones/utilities/Utils.java +++ b/src/acr/browser/barebones/utilities/Utils.java @@ -7,8 +7,6 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; - -import acr.browser.barebones.activities.AdvancedSettingsActivity; import acr.browser.barebones.databases.DatabaseHandler; import acr.browser.barebones.databases.HistoryItem; import android.annotation.SuppressLint; @@ -31,25 +29,21 @@ import android.util.Log; import android.webkit.URLUtil; import android.widget.Toast; - - public class Utils { - + public static DatabaseHandler historyHandler; public static SQLiteDatabase history; - + public static void createInformativeDialog(Context context, String title, String message) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(title); - builder.setMessage(message) - .setCancelable(true) - .setPositiveButton("Ok", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - } - }); + builder.setMessage(message).setCancelable(true) + .setPositiveButton("Ok", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + } + }); AlertDialog alert = builder.create(); alert.show(); } @@ -108,12 +102,11 @@ public class Utils { try { StringBuilder sb = new StringBuilder("url" + " = "); DatabaseUtils.appendEscapedSQLString(sb, url); - historyHandler = new DatabaseHandler( - context); + historyHandler = new DatabaseHandler(context); history = historyHandler.getReadableDatabase(); - Cursor cursor = history.query("history", new String[] { "id", - "url", "title" }, sb.toString(), null, null, null, - null); + Cursor cursor = history.query("history", new String[] { + "id", "url", "title" }, sb.toString(), null, null, + null, null); if (!cursor.moveToFirst()) { historyHandler.addHistoryItem(new HistoryItem(url, title)); @@ -140,15 +133,17 @@ public class Utils { } } } - + @TargetApi(Build.VERSION_CODES.GINGERBREAD) - public static void downloadFile(final Context context, final String url, final String contentDisposition, final String mimetype){ + public static void downloadFile(final Context context, final String url, + final String contentDisposition, final String mimetype) { try { Thread downloader = new Thread(new Runnable() { @SuppressLint("InlinedApi") @Override public void run() { - DownloadManager download = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); + DownloadManager download = (DownloadManager) context + .getSystemService(Context.DOWNLOAD_SERVICE); Uri nice = Uri.parse(url); DownloadManager.Request it = new DownloadManager.Request( nice); @@ -158,9 +153,10 @@ public class Utils { it.allowScanningByMediaScanner(); it.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } - - it.setDestinationInExternalPublicDir( - Environment.DIRECTORY_DOWNLOADS, fileName); + String location = context.getSharedPreferences("settings", + 0).getString("download", + Environment.DIRECTORY_DOWNLOADS); + it.setDestinationInExternalPublicDir(location, fileName); Log.i("Barebones", "Downloading" + fileName); download.enqueue(it); } @@ -178,18 +174,26 @@ public class Utils { } } - - public static void showToast(Context context, String message){ + + public static void showToast(Context context, String message) { Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); } - - public static Intent newEmailIntent(Context context, String address, String subject, String body, String cc) { - Intent intent = new Intent(Intent.ACTION_SEND); - intent.putExtra(Intent.EXTRA_EMAIL, new String[] { address }); - intent.putExtra(Intent.EXTRA_TEXT, body); - intent.putExtra(Intent.EXTRA_SUBJECT, subject); - intent.putExtra(Intent.EXTRA_CC, cc); - intent.setType("message/rfc822"); - return intent; + + public static Intent newEmailIntent(Context context, String address, + String subject, String body, String cc) { + Intent intent = new Intent(Intent.ACTION_SEND); + intent.putExtra(Intent.EXTRA_EMAIL, new String[] { address }); + intent.putExtra(Intent.EXTRA_TEXT, body); + intent.putExtra(Intent.EXTRA_SUBJECT, subject); + intent.putExtra(Intent.EXTRA_CC, cc); + intent.setType("message/rfc822"); + return intent; } + + public static int convertDensityPixesl(Context context, int densityPixels) { + float scale = context.getResources().getDisplayMetrics().density; + int pixels = (int) (densityPixels * scale + 0.5f); + return pixels; + } + } diff --git a/src/acr/browser/barebones/webviewclasses/CustomChromeClient.java b/src/acr/browser/barebones/webviewclasses/CustomChromeClient.java new file mode 100644 index 0000000..72c68d2 --- /dev/null +++ b/src/acr/browser/barebones/webviewclasses/CustomChromeClient.java @@ -0,0 +1,216 @@ +package acr.browser.barebones.webviewclasses; + +import acr.browser.barebones.R; +import acr.browser.barebones.activities.BrowserActivity; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Message; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.GeolocationPermissions; +import android.webkit.ValueCallback; +import android.webkit.WebChromeClient; +import android.webkit.WebView; +import android.webkit.WebStorage.QuotaUpdater; +import android.widget.FrameLayout; + +@SuppressLint("SetJavaScriptEnabled") +public class CustomChromeClient extends WebChromeClient { + private static Context context; + private static Activity browserActivity; + private static View mCustomView; + private static CustomViewCallback mCustomViewCallback; + public CustomChromeClient(BrowserActivity activity){ + context = activity; + browserActivity = activity; + } + public Bitmap mDefaultVideoPoster; + public View mVideoProgressView; + public FrameLayout fullScreenContainer; + public int orientation; + + @Override + public void onExceededDatabaseQuota(String url, + String databaseIdentifier, long quota, + long estimatedDatabaseSize, long totalQuota, + QuotaUpdater quotaUpdater) { + quotaUpdater.updateQuota(totalQuota + estimatedDatabaseSize); + + } + + @Override + public void onProgressChanged(WebView view, int newProgress) { + BrowserActivity.onProgressChanged(view.getId(), newProgress); + super.onProgressChanged(view, newProgress); + } + + @Override + public void onReachedMaxAppCacheSize(long requiredStorage, long quota, + QuotaUpdater quotaUpdater) { + quotaUpdater.updateQuota(quota + requiredStorage); + } + + @Override + public Bitmap getDefaultVideoPoster() { + if (mDefaultVideoPoster == null) { + mDefaultVideoPoster = BitmapFactory.decodeResource( + context.getResources(), android.R.color.black); + } + return mDefaultVideoPoster; + } + + @Override + public View getVideoLoadingProgressView() { + if (mVideoProgressView == null) { + LayoutInflater inflater = LayoutInflater.from(context); + mVideoProgressView = inflater.inflate( + android.R.layout.simple_spinner_item, null); + } + return mVideoProgressView; + } + + @Override + public void onCloseWindow(WebView window) { + Message msg = Message.obtain(); + msg.what = 3; + msg.arg1 = window.getId(); + BrowserActivity.browserHandler.sendMessage(msg); + super.onCloseWindow(window); + } + + @Override + public boolean onCreateWindow(WebView view, boolean isDialog, + boolean isUserGesture, final Message resultMsg) { + + if (isUserGesture) { + BrowserActivity.onCreateWindow(resultMsg); + } + return true; + } + + + @Override + public void onGeolocationPermissionsShowPrompt(final String origin, + final GeolocationPermissions.Callback callback) { + final boolean remember = true; + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Location Access"); + String org = null; + if (origin.length() > 50) { + org = (String) origin.subSequence(0, 50) + "..."; + } else { + org = origin; + } + builder.setMessage(org + "\nWould like to use your Location ") + .setCancelable(true) + .setPositiveButton("Allow", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + callback.invoke(origin, true, remember); + } + }) + .setNegativeButton("Don't Allow", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + callback.invoke(origin, false, remember); + } + }); + AlertDialog alert = builder.create(); + alert.show(); + + } + + @Override + public void onHideCustomView() { + if (mCustomView == null && mCustomViewCallback == null) { + return; + } + mCustomView = null; + mCustomView.setKeepScreenOn(false); + BrowserActivity.onHideCustomView(fullScreenContainer, mCustomViewCallback, orientation); + } + + @Override + public void onReceivedIcon(WebView view, Bitmap favicon) { + BrowserActivity.setFavicon(view.getId(), favicon); + } + + @Override + public void onReceivedTitle(final WebView view, final String title) { + BrowserActivity.onReceivedTitle(view.getId(), title); + super.onReceivedTitle(view, title); + } + + @Override + public void onShowCustomView(View view, int requestedOrientation, + CustomViewCallback callback) { + if (mCustomView != null) { + callback.onCustomViewHidden(); + return; + } + view.setKeepScreenOn(true); + orientation = browserActivity.getRequestedOrientation(); + FrameLayout screen = (FrameLayout) browserActivity.getWindow().getDecorView(); + fullScreenContainer = new FrameLayout(context); + fullScreenContainer.setBackgroundColor(context.getResources().getColor( + R.color.black)); + BrowserActivity.onShowCustomView(); + fullScreenContainer.addView(view, + ViewGroup.LayoutParams.MATCH_PARENT); + screen.addView(fullScreenContainer, + ViewGroup.LayoutParams.MATCH_PARENT); + mCustomView = view; + mCustomViewCallback = callback; + browserActivity.setRequestedOrientation(requestedOrientation); + + } + + @Override + public void onShowCustomView(View view, + WebChromeClient.CustomViewCallback callback) { + if (mCustomView != null) { + callback.onCustomViewHidden(); + return; + } + view.setKeepScreenOn(true); + orientation = browserActivity.getRequestedOrientation(); + FrameLayout screen = (FrameLayout) browserActivity.getWindow().getDecorView(); + fullScreenContainer = new FrameLayout(context); + fullScreenContainer.setBackgroundColor(context.getResources().getColor( + R.color.black)); + BrowserActivity.onShowCustomView(); + fullScreenContainer.addView(view, + ViewGroup.LayoutParams.MATCH_PARENT); + screen.addView(fullScreenContainer, + ViewGroup.LayoutParams.MATCH_PARENT); + mCustomView = view; + mCustomViewCallback = callback; + browserActivity.setRequestedOrientation(browserActivity.getRequestedOrientation()); + } + + public void openFileChooser(ValueCallback uploadMsg) { + BrowserActivity.openFileChooser(uploadMsg); + } + + public void openFileChooser(ValueCallback uploadMsg, + String acceptType) { + BrowserActivity.openFileChooser(uploadMsg); + } + + public void openFileChooser(ValueCallback uploadMsg, + String acceptType, String capture) { + BrowserActivity.openFileChooser(uploadMsg); + } + +} diff --git a/src/acr/browser/barebones/webviewclasses/CustomDownloadListener.java b/src/acr/browser/barebones/webviewclasses/CustomDownloadListener.java new file mode 100644 index 0000000..e961d22 --- /dev/null +++ b/src/acr/browser/barebones/webviewclasses/CustomDownloadListener.java @@ -0,0 +1,62 @@ +package acr.browser.barebones.webviewclasses; + +import acr.browser.barebones.activities.BrowserActivity; +import acr.browser.barebones.utilities.Utils; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; +import android.webkit.DownloadListener; + +public class CustomDownloadListener implements DownloadListener { + private static Context context; + public CustomDownloadListener(BrowserActivity activity){ + context = activity; + } + + + @Override + public void onDownloadStart(final String url, String userAgent, + final String contentDisposition, final String mimetype, + long contentLength) { + if (url.endsWith(".mp4") || url.endsWith(".m4a")) { + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Open as..."); + builder.setMessage( + "Do you want to download this video or watch it in an app?") + .setCancelable(true) + .setPositiveButton("Download", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + Utils.downloadFile(context, url, + contentDisposition, mimetype); + } + }) + .setNegativeButton("Watch", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + Intent intent = new Intent( + Intent.ACTION_VIEW); + intent.setDataAndType(Uri.parse(url), + "video/mp4"); + intent.putExtra( + "acr.browser.barebones.Download", + 1); + context.startActivity(intent); + } + }); + AlertDialog alert = builder.create(); + alert.show(); + + } else { + Utils.downloadFile(context, url, contentDisposition, mimetype); + } + } + +} diff --git a/src/acr/browser/barebones/webviewclasses/CustomWebViewClient.java b/src/acr/browser/barebones/webviewclasses/CustomWebViewClient.java new file mode 100644 index 0000000..61914b5 --- /dev/null +++ b/src/acr/browser/barebones/webviewclasses/CustomWebViewClient.java @@ -0,0 +1,202 @@ +package acr.browser.barebones.webviewclasses; + +import acr.browser.barebones.activities.BrowserActivity; +import acr.browser.barebones.utilities.Utils; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.graphics.Bitmap; +import android.net.MailTo; +import android.net.Uri; +import android.net.http.SslError; +import android.os.Message; +import android.text.InputType; +import android.text.TextUtils; +import android.text.method.PasswordTransformationMethod; +import android.util.Log; +import android.webkit.HttpAuthHandler; +import android.webkit.SslErrorHandler; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.EditText; +import android.widget.LinearLayout; + +public class CustomWebViewClient extends WebViewClient { + private static Context context; + public CustomWebViewClient(BrowserActivity browserActivity){ + context = browserActivity; + } + + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + if (url.startsWith("market://") + || url.startsWith("http://play.google.com") + || url.startsWith("https://play.google.com")) { + Intent urlIntent = new Intent(Intent.ACTION_VIEW, + Uri.parse(url)); + urlIntent.putExtra("acr.browser.barebones.Origin", + view.getId() + 1); + context.startActivity(urlIntent); + return true; + } else if (url.startsWith("http://www.youtube.com") + || url.startsWith("https://www.youtube.com")) { + Intent urlIntent = new Intent(Intent.ACTION_VIEW, + Uri.parse(url)); + urlIntent.putExtra("acr.browser.barebones.Origin", + view.getId() + 1); + context.startActivity(urlIntent); + return true; + } else if (url.startsWith("http://maps.google.com") + || url.startsWith("https://maps.google.com")) { + Intent urlIntent = new Intent(Intent.ACTION_VIEW, + Uri.parse(url)); + urlIntent.putExtra("acr.browser.barebones.Origin", + view.getId() + 1); + context.startActivity(urlIntent); + return true; + } else if (url.contains("tel:") || TextUtils.isDigitsOnly(url)) { + context.startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url))); + return true; + } else if (url.contains("mailto:")) { + MailTo mailTo = MailTo.parse(url); + Intent i = Utils.newEmailIntent(context, + mailTo.getTo(), mailTo.getSubject(), mailTo.getBody(), + mailTo.getCc()); + context.startActivity(i); + view.reload(); + return true; + } + return super.shouldOverrideUrlLoading(view, url); + } + + @Override + public void onReceivedHttpAuthRequest(final WebView view, + final HttpAuthHandler handler, final String host, + final String realm) { + + AlertDialog.Builder builder = new AlertDialog.Builder(context); + final EditText name = new EditText(context); + final EditText password = new EditText(context); + LinearLayout passLayout = new LinearLayout(context); + passLayout.setOrientation(LinearLayout.VERTICAL); + + passLayout.addView(name); + passLayout.addView(password); + + name.setHint("Username"); + password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); + password.setTransformationMethod(new PasswordTransformationMethod()); + password.setHint("Password"); + builder.setTitle("Sign in"); + builder.setView(passLayout); + builder.setCancelable(true) + .setPositiveButton("Sign in", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + String user = name.getText().toString(); + String pass = password.getText().toString(); + handler.proceed(user.trim(), pass.trim()); + Log.i("Lightning", "Request Login"); + + } + }) + .setNegativeButton("Cancel", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int id) { + handler.cancel(); + + } + }); + AlertDialog alert = builder.create(); + alert.show(); + + } + + @Override + public void onScaleChanged(WebView view, float oldScale, float newScale) { + if (view.isShown()) { + view.invalidate(); + } + super.onScaleChanged(view, oldScale, newScale); + } + + @Override + public void onPageFinished(WebView view, String url) { + BrowserActivity.onPageFinished(view, url); + super.onPageFinished(view, url); + } + + @Override + public void onPageStarted(WebView view, String url, Bitmap favicon) { + BrowserActivity.onPageStarted(view, url, favicon); + super.onPageStarted(view, url, favicon); + } + + @Override + 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(); + if (error.getPrimaryError() == SslError.SSL_UNTRUSTED) { + alert.show(); + } else { + handler.proceed(); + } + + } + + @Override + 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); + } +} diff --git a/src/acr/browser/barebones/webviewclasses/WebPageLongClickListener.java b/src/acr/browser/barebones/webviewclasses/WebPageLongClickListener.java new file mode 100644 index 0000000..959d446 --- /dev/null +++ b/src/acr/browser/barebones/webviewclasses/WebPageLongClickListener.java @@ -0,0 +1,14 @@ +package acr.browser.barebones.webviewclasses; + +import acr.browser.barebones.activities.BrowserActivity; +import android.view.View; +import android.view.View.OnLongClickListener; + +public class WebPageLongClickListener implements OnLongClickListener{ + + @Override + public boolean onLongClick(View v) { + return BrowserActivity.onLongClick(v.getId()); + } + +}