| OLD | NEW | 
| (Empty) |  | 
 |    1 /* | 
 |    2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
 |    3  * Copyright (C) 2006-2016 Eyeo GmbH | 
 |    4  * | 
 |    5  * Adblock Plus is free software: you can redistribute it and/or modify | 
 |    6  * it under the terms of the GNU General Public License version 3 as | 
 |    7  * published by the Free Software Foundation. | 
 |    8  * | 
 |    9  * Adblock Plus is distributed in the hope that it will be useful, | 
 |   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
 |   12  * GNU General Public License for more details. | 
 |   13  * | 
 |   14  * You should have received a copy of the GNU General Public License | 
 |   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
 |   16  */ | 
 |   17  | 
 |   18 package org.adblockplus.libadblockplus.webviewapp; | 
 |   19  | 
 |   20 import org.adblockplus.android.AdblockWebView; | 
 |   21  | 
 |   22 import android.app.Activity; | 
 |   23 import android.graphics.Bitmap; | 
 |   24 import android.os.Bundle; | 
 |   25 import android.view.View; | 
 |   26 import android.view.inputmethod.InputMethodManager; | 
 |   27 import android.webkit.WebChromeClient; | 
 |   28 import android.webkit.WebView; | 
 |   29 import android.webkit.WebViewClient; | 
 |   30 import android.widget.Button; | 
 |   31 import android.widget.CheckBox; | 
 |   32 import android.widget.CompoundButton; | 
 |   33 import android.widget.EditText; | 
 |   34 import android.widget.ProgressBar; | 
 |   35  | 
 |   36 public class MainActivity extends Activity | 
 |   37 { | 
 |   38   private static final boolean DEVELOPMENT_BUILD = true; | 
 |   39  | 
 |   40   private ProgressBar progress; | 
 |   41   private EditText url; | 
 |   42   private Button ok; | 
 |   43   private Button back; | 
 |   44   private Button forward; | 
 |   45   private CheckBox aa; | 
 |   46   private AdblockWebView webView; | 
 |   47  | 
 |   48   @Override | 
 |   49   protected void onCreate(Bundle savedInstanceState) | 
 |   50   { | 
 |   51     super.onCreate(savedInstanceState); | 
 |   52     setContentView(R.layout.activity_main); | 
 |   53  | 
 |   54     bindControls(); | 
 |   55     initControls(); | 
 |   56   } | 
 |   57  | 
 |   58   private void bindControls() | 
 |   59   { | 
 |   60     url = (EditText) findViewById(R.id.main_url); | 
 |   61     ok = (Button) findViewById(R.id.main_ok); | 
 |   62     back = (Button) findViewById(R.id.main_back); | 
 |   63     forward = (Button) findViewById(R.id.main_forward); | 
 |   64     aa = (CheckBox) findViewById(R.id.main_aa); | 
 |   65     progress = (ProgressBar) findViewById(R.id.main_progress); | 
 |   66     webView = (AdblockWebView) findViewById(R.id.main_webview); | 
 |   67   } | 
 |   68  | 
 |   69   private void setProgressVisible(boolean visible) | 
 |   70   { | 
 |   71     progress.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); | 
 |   72   } | 
 |   73  | 
 |   74   private WebViewClient webViewClient = new WebViewClient() | 
 |   75   { | 
 |   76     @Override | 
 |   77     public void onPageStarted(WebView view, String url, Bitmap favicon) | 
 |   78     { | 
 |   79       setProgressVisible(true); | 
 |   80  | 
 |   81       // show updated URL (because of possible redirection) | 
 |   82       MainActivity.this.url.setText(url); | 
 |   83     } | 
 |   84  | 
 |   85     @Override | 
 |   86     public void onPageFinished(WebView view, String url) | 
 |   87     { | 
 |   88       setProgressVisible(false); | 
 |   89       updateButtons(); | 
 |   90     } | 
 |   91  | 
 |   92     @Override | 
 |   93     public void onReceivedError(WebView view, int errorCode, String description,
      String failingUrl) | 
 |   94     { | 
 |   95       updateButtons(); | 
 |   96     } | 
 |   97   }; | 
 |   98  | 
 |   99   private void updateButtons() | 
 |  100   { | 
 |  101     back.setEnabled(webView.canGoBack()); | 
 |  102     forward.setEnabled(webView.canGoForward()); | 
 |  103   } | 
 |  104  | 
 |  105   private WebChromeClient webChromeClient = new WebChromeClient() | 
 |  106   { | 
 |  107     @Override | 
 |  108     public void onProgressChanged(WebView view, int newProgress) | 
 |  109     { | 
 |  110       progress.setProgress(newProgress); | 
 |  111     } | 
 |  112   }; | 
 |  113  | 
 |  114   private void initControls() | 
 |  115   { | 
 |  116     ok.setOnClickListener(new View.OnClickListener() | 
 |  117     { | 
 |  118       @Override | 
 |  119       public void onClick(View view) | 
 |  120       { | 
 |  121         loadUrl(); | 
 |  122       } | 
 |  123     }); | 
 |  124  | 
 |  125     back.setOnClickListener(new View.OnClickListener() | 
 |  126     { | 
 |  127       @Override | 
 |  128       public void onClick(View v) | 
 |  129       { | 
 |  130         loadPrev(); | 
 |  131       } | 
 |  132     }); | 
 |  133  | 
 |  134     forward.setOnClickListener(new View.OnClickListener() | 
 |  135     { | 
 |  136       @Override | 
 |  137       public void onClick(View v) | 
 |  138       { | 
 |  139         loadForward(); | 
 |  140       } | 
 |  141     }); | 
 |  142  | 
 |  143     aa.setChecked(webView.isAcceptableAdsEnabled()); | 
 |  144     aa.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() | 
 |  145     { | 
 |  146       @Override | 
 |  147       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) | 
 |  148       { | 
 |  149         enableAcceptableAds(isChecked); | 
 |  150       } | 
 |  151     }); | 
 |  152  | 
 |  153     setProgressVisible(false); | 
 |  154     updateButtons(); | 
 |  155  | 
 |  156     // to get debug/warning log output | 
 |  157     webView.setDebugMode(DEVELOPMENT_BUILD); | 
 |  158  | 
 |  159     // render as fast as we can | 
 |  160     webView.setAllowDrawDelay(0); | 
 |  161  | 
 |  162     // to show that external WebViewClient is still working | 
 |  163     webView.setWebViewClient(webViewClient); | 
 |  164  | 
 |  165     // to show that external WebChromeClient is still working | 
 |  166     webView.setWebChromeClient(webChromeClient); | 
 |  167   } | 
 |  168  | 
 |  169   private void enableAcceptableAds(boolean enabled) | 
 |  170   { | 
 |  171     webView.setAcceptableAdsEnabled(enabled); | 
 |  172   } | 
 |  173  | 
 |  174   private void hideSoftwareKeyboard() | 
 |  175   { | 
 |  176     InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_S
     ERVICE); | 
 |  177     imm.hideSoftInputFromWindow(url.getWindowToken(), 0); | 
 |  178   } | 
 |  179  | 
 |  180   private void loadPrev() | 
 |  181   { | 
 |  182     hideSoftwareKeyboard(); | 
 |  183     if (webView.canGoBack()) | 
 |  184     { | 
 |  185       webView.goBack(); | 
 |  186     } | 
 |  187   } | 
 |  188  | 
 |  189   private void loadForward() | 
 |  190   { | 
 |  191     hideSoftwareKeyboard(); | 
 |  192     if (webView.canGoForward()) | 
 |  193     { | 
 |  194       webView.goForward(); | 
 |  195     } | 
 |  196   } | 
 |  197  | 
 |  198   private String prepareUrl(String url) | 
 |  199   { | 
 |  200     if (!url.startsWith("http")) | 
 |  201       url = "http://" + url; | 
 |  202  | 
 |  203     // make sure url is valid URL | 
 |  204     return url; | 
 |  205   } | 
 |  206  | 
 |  207   private void loadUrl() | 
 |  208   { | 
 |  209     hideSoftwareKeyboard(); | 
 |  210     webView.loadUrl(prepareUrl(url.getText().toString())); | 
 |  211   } | 
 |  212  | 
 |  213   @Override | 
 |  214   protected void onDestroy() | 
 |  215   { | 
 |  216     webView.dispose(); | 
 |  217  | 
 |  218     super.onDestroy(); | 
 |  219   } | 
 |  220 } | 
| OLD | NEW |