diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 412eeda..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,22 +0,0 @@
-# Auto detect text files and perform LF normalization
-* text=auto
-
-# Custom for Visual Studio
-*.cs diff=csharp
-*.sln merge=union
-*.csproj merge=union
-*.vbproj merge=union
-*.fsproj merge=union
-*.dbproj merge=union
-
-# Standard to msysgit
-*.doc diff=astextplain
-*.DOC diff=astextplain
-*.docx diff=astextplain
-*.DOCX diff=astextplain
-*.dot diff=astextplain
-*.DOT diff=astextplain
-*.pdf diff=astextplain
-*.PDF diff=astextplain
-*.rtf diff=astextplain
-*.RTF diff=astextplain
diff --git a/.gitignore b/.gitignore
index 468c405..4620058 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,169 +1,34 @@
-#################
-## Eclipse
-#################
-
-*.pydevproject
-.project
-.metadata
-bin/
-tmp/
-gen/
-*.tmp
-*.bak
-*.swp
-*~.nib
-local.properties
-.classpath
-.settings/
-.loadpath
-proguard/
+# Android Studio
+*.jks
+.DS_Store
+/local.properties
+/.idea/workspace.xml
+/build
# External tool builders
.externalToolBuilders/
-# Locally stored "Eclipse launch configurations"
-*.launch
-
# CDT-specific
.cproject
# PDT-specific
.buildpath
-
-#################
-## Visual Studio
-#################
-
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-
-# User-specific files
-*.suo
-*.user
-*.sln.docstates
-
-# Build results
-[Dd]ebug/
-[Rr]elease/
-*_i.c
-*_p.c
-*.ilk
-*.meta
-*.obj
-*.pch
-*.pdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.vspscc
-.builds
-*.dotCover
-
-## TODO: If you have NuGet Package Restore enabled, uncomment this
-#packages/
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opensdf
-*.sdf
-
-# Visual Studio profiler
-*.psess
-*.vsp
-
-# ReSharper is a .NET coding add-in
-_ReSharper*
-
-# Installshield output folder
-[Ee]xpress
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish
-
-# Others
-[Bb]in
-[Oo]bj
-sql
-TestResults
-*.Cache
-ClientBin
-stylecop.*
-~$*
-*.dbmdl
-Generated_Code #added for RIA/Silverlight projects
-
-# Backup & report files from converting an old project file to a newer
-# Visual Studio version. Backup files are not needed, because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-
-
-
-############
-## Windows
-############
-
# Windows image file caches
Thumbs.db
+ehthumbs.db
-# Folder config file
-Desktop.ini
-
-
-#############
-## Python
-#############
+# Local configuration file (sdk path, etc)
+local.properties
+gradle.properties
+.directory
-*.py[co]
+# Intellij project files
+*.iml
+*.ipr
+*.iws
+.idea/
-# Packages
-*.egg
-*.egg-info
-dist
+# Gradle
build
-eggs
-parts
-bin
-var
-sdist
-develop-eggs
-.installed.cfg
-
-# Installer logs
-pip-log.txt
-
-# Unit test / coverage reports
-.coverage
-.tox
-
-#Translations
-*.mo
-
-#Mr Developer
-.mr.developer.cfg
-
-# Mac crap
-.DS_Store
-
-# Support libraries
-/external/appcompat
-/external/palette
+.gradle
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..96cc43e
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
new file mode 100644
index 0000000..e7bedf3
--- /dev/null
+++ b/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..97626ba
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..02069c6
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..99b1a92
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..3b31283
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..8a1bb8c
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..00ab69e
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..00cd10a
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index b8cde23..17527aa 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,15 +1,16 @@
language: android
android:
components:
- - build-tools-21.1.1
- - android-21
+ - build-tools-22.0.1
+ - android-22
- extra-android-support
+ - extra-android-m2repository
licenses:
- 'android-sdk-license-.+'
- '.*intel.+'
before_install:
+ - chmod +x gradlew
- git submodule update --init --recursive
install:
- - ./setup-ant.sh
+ - ./gradlew
script:
- - ant debug && lint -w --exitcode --disable MissingTranslation .
diff --git a/Lightning-Browser.iml b/Lightning-Browser.iml
new file mode 100644
index 0000000..77ef0be
--- /dev/null
+++ b/Lightning-Browser.iml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ant.properties b/ant.properties
deleted file mode 100644
index 6b22946..0000000
--- a/ant.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-java.source=1.7
-java.target=1.7
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..3f22d0d
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1,3 @@
+/build
+app-release.apk
+manifest-merger-release-report.txt
\ No newline at end of file
diff --git a/app/app.iml b/app/app.iml
new file mode 100644
index 0000000..9c6161c
--- /dev/null
+++ b/app/app.iml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..915c6ad
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,42 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 22
+ buildToolsVersion "22.0.1"
+
+ defaultConfig {
+ applicationId "acr.browser.lightning"
+ minSdkVersion 14
+ targetSdkVersion 22
+ versionCode 78
+ versionName "4.0.10a"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled true
+ shrinkResources true
+ proguardFiles 'proguard-project.txt'
+ }
+ debug {
+ minifyEnabled true
+ shrinkResources true
+ proguardFiles 'proguard-project.txt'
+ }
+ }
+
+ lintOptions {
+ abortOnError false
+ }
+}
+
+dependencies {
+ compile(project(':libnetcipher')) {
+ // Exclude any support-v4 modules because appcompat-v7 will import the latest
+ exclude module: 'support-v4'
+ exclude module: 'android-support-v4'
+ }
+ compile 'com.android.support:palette-v7:22.1.1'
+ compile 'com.android.support:appcompat-v7:22.1.1'
+ compile files('libs/jsoup-1.8.1.jar')
+}
diff --git a/libs/jsoup-1.8.1.jar b/app/libs/jsoup-1.8.1.jar
similarity index 100%
rename from libs/jsoup-1.8.1.jar
rename to app/libs/jsoup-1.8.1.jar
diff --git a/proguard-project.txt b/app/proguard-project.txt
similarity index 88%
rename from proguard-project.txt
rename to app/proguard-project.txt
index e1acdcd..4bab3ea 100644
--- a/proguard-project.txt
+++ b/app/proguard-project.txt
@@ -42,7 +42,7 @@
}
# Without this rule, openFileChooser does not get called on KitKat
--keep class acr.browser.lightning.LightningView$LightningChromeClient {
+-keep class acr.browser.lightning.view.LightningView$LightningChromeClient {
void openFileChooser(android.webkit.ValueCallback);
void openFileChooser(android.webkit.ValueCallback, java.lang.String);
void openFileChooser(android.webkit.ValueCallback, java.lang.String, java.lang.String);
@@ -72,3 +72,8 @@
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
+
+# The support library contains references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontwarn android.support.**
diff --git a/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
similarity index 87%
rename from AndroidManifest.xml
rename to app/src/main/AndroidManifest.xml
index b022a3d..a8a20a3 100644
--- a/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,219 +1,214 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/ask.png b/app/src/main/assets/ask.png
similarity index 100%
rename from assets/ask.png
rename to app/src/main/assets/ask.png
diff --git a/assets/baidu.png b/app/src/main/assets/baidu.png
similarity index 100%
rename from assets/baidu.png
rename to app/src/main/assets/baidu.png
diff --git a/assets/bing.png b/app/src/main/assets/bing.png
similarity index 100%
rename from assets/bing.png
rename to app/src/main/assets/bing.png
diff --git a/assets/duckduckgo.png b/app/src/main/assets/duckduckgo.png
similarity index 100%
rename from assets/duckduckgo.png
rename to app/src/main/assets/duckduckgo.png
diff --git a/assets/google.png b/app/src/main/assets/google.png
similarity index 100%
rename from assets/google.png
rename to app/src/main/assets/google.png
diff --git a/assets/hosts.txt b/app/src/main/assets/hosts.txt
similarity index 100%
rename from assets/hosts.txt
rename to app/src/main/assets/hosts.txt
diff --git a/assets/lightning.png b/app/src/main/assets/lightning.png
similarity index 100%
rename from assets/lightning.png
rename to app/src/main/assets/lightning.png
diff --git a/assets/startpage.png b/app/src/main/assets/startpage.png
similarity index 100%
rename from assets/startpage.png
rename to app/src/main/assets/startpage.png
diff --git a/assets/yahoo.png b/app/src/main/assets/yahoo.png
similarity index 100%
rename from assets/yahoo.png
rename to app/src/main/assets/yahoo.png
diff --git a/assets/yandex.png b/app/src/main/assets/yandex.png
similarity index 100%
rename from assets/yandex.png
rename to app/src/main/assets/yandex.png
diff --git a/src/acr/browser/lightning/AboutSettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/AboutSettingsActivity.java
similarity index 97%
rename from src/acr/browser/lightning/AboutSettingsActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/AboutSettingsActivity.java
index 551f944..dd7e19d 100644
--- a/src/acr/browser/lightning/AboutSettingsActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/AboutSettingsActivity.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
@@ -15,6 +15,8 @@ import android.view.View.OnClickListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import acr.browser.lightning.R;
+
public class AboutSettingsActivity extends ThemableSettingsActivity implements OnClickListener {
private int mEasterEggCounter;
diff --git a/src/acr/browser/lightning/AdvancedSettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/AdvancedSettingsActivity.java
similarity index 97%
rename from src/acr/browser/lightning/AdvancedSettingsActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/AdvancedSettingsActivity.java
index 258d3a1..8632556 100644
--- a/src/acr/browser/lightning/AdvancedSettingsActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/AdvancedSettingsActivity.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.app.AlertDialog;
import android.content.Context;
@@ -18,6 +18,9 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.R;
+
public class AdvancedSettingsActivity extends ThemableSettingsActivity {
private CheckBox cbAllowPopups, cbAllowCookies, cbAllowIncognitoCookies, cbRestoreTabs;
@@ -160,7 +163,7 @@ public class AdvancedSettingsActivity extends ThemableSettingsActivity {
}
- public void renderPicker() {
+ private void renderPicker() {
AlertDialog.Builder picker = new AlertDialog.Builder(mContext);
picker.setTitle(getResources().getString(R.string.rendering_mode));
@@ -203,7 +206,7 @@ public class AdvancedSettingsActivity extends ThemableSettingsActivity {
picker.show();
}
- public void urlBoxPicker() {
+ private void urlBoxPicker() {
AlertDialog.Builder picker = new AlertDialog.Builder(mContext);
picker.setTitle(getResources().getString(R.string.url_contents));
diff --git a/src/acr/browser/lightning/BookmarkActivity.java b/app/src/main/java/acr/browser/lightning/activity/BookmarkActivity.java
similarity index 90%
rename from src/acr/browser/lightning/BookmarkActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/BookmarkActivity.java
index 35fbe1c..3e012c2 100644
--- a/src/acr/browser/lightning/BookmarkActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/BookmarkActivity.java
@@ -1,4 +1,4 @@
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import java.io.File;
import java.util.Arrays;
@@ -17,11 +17,13 @@ import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;
+import acr.browser.lightning.database.BookmarkManager;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.R;
+
public class BookmarkActivity extends ThemableSettingsActivity implements OnClickListener {
private BookmarkManager mBookmarkManager;
- private PreferenceManager mPreferences;
- private boolean mSystemBrowser;
private File[] mFileList;
private String[] mFileNameList;
private static final File mPath = new File(Environment.getExternalStorageDirectory().toString());
@@ -44,15 +46,15 @@ public class BookmarkActivity extends ThemableSettingsActivity implements OnClic
TextView importBookmarks = (TextView) findViewById(R.id.isImportBrowserAvailable);
mBookmarkManager = BookmarkManager.getInstance(getApplicationContext());
- mPreferences = PreferenceManager.getInstance();
-
- mSystemBrowser = mPreferences.getSystemBrowserPresent();
+ PreferenceManager mPreferences = PreferenceManager.getInstance();
+
+ boolean systemBrowser = mPreferences.getSystemBrowserPresent();
exportBackup.setOnClickListener(this);
importBackup.setOnClickListener(this);
importFromBrowser.setOnClickListener(this);
- if (mSystemBrowser) {
+ if (systemBrowser) {
importBookmarks.setText(getResources().getString(R.string.stock_browser_available));
} else {
importBookmarks.setText(getResources().getString(R.string.stock_browser_unavailable));
@@ -112,7 +114,7 @@ public class BookmarkActivity extends ThemableSettingsActivity implements OnClic
}
}
- public class SortName implements Comparator {
+ private class SortName implements Comparator {
@Override
public int compare(File a, File b) {
@@ -133,7 +135,7 @@ public class BookmarkActivity extends ThemableSettingsActivity implements OnClic
}
protected Dialog onCreateDialog(int id) {
- Dialog dialog = null;
+ Dialog dialog;
final AlertDialog.Builder builder = new Builder(this);
switch (id) {
diff --git a/src/acr/browser/lightning/BrowserActivity.java b/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java
similarity index 95%
rename from src/acr/browser/lightning/BrowserActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java
index df0d04a..bde3d06 100644
--- a/src/acr/browser/lightning/BrowserActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java
@@ -2,7 +2,7 @@
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.animation.ArgbEvaluator;
import android.animation.ValueAnimator;
@@ -61,6 +61,22 @@ import android.support.v7.graphics.Palette;
import android.support.v7.widget.Toolbar;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView.OnEditorActionListener;
+
+import acr.browser.lightning.view.AnimatedProgressBar;
+import acr.browser.lightning.database.BookmarkManager;
+import acr.browser.lightning.constant.BookmarkPage;
+import acr.browser.lightning.controller.BrowserController;
+import acr.browser.lightning.object.ClickHandler;
+import acr.browser.lightning.constant.Constants;
+import acr.browser.lightning.object.DrawerArrowDrawable;
+import acr.browser.lightning.database.HistoryDatabase;
+import acr.browser.lightning.database.HistoryItem;
+import acr.browser.lightning.constant.HistoryPage;
+import acr.browser.lightning.view.LightningView;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.R;
+import acr.browser.lightning.object.SearchAdapter;
+import acr.browser.lightning.utils.Utils;
import info.guardianproject.onionkit.ui.OrbotHelper;
import info.guardianproject.onionkit.web.WebkitProxy;
@@ -80,19 +96,16 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
private FullscreenHolder mFullscreenContainer;
private ListView mDrawerListLeft, mDrawerListRight;
private LinearLayout mDrawerLeft, mDrawerRight, mUiLayout, mToolbarLayout;
- private RelativeLayout mNewTab, mSearchBar;
+ private RelativeLayout mSearchBar;
// List
- private final List mWebViews = new ArrayList();
+ private final List mWebViews = new ArrayList<>();
private List mBookmarkList;
private LightningView mCurrentView;
- // View
- private ActionBar mActionBar;
private AnimatedProgressBar mProgressBar;
private AutoCompleteTextView mSearch;
private ImageView mArrowImage;
- private Toolbar mToolbar;
private VideoView mVideoView;
private View mCustomView, mVideoProgressView;
@@ -144,9 +157,9 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
@SuppressWarnings("deprecation")
private synchronized void initialize() {
setContentView(R.layout.activity_main);
- mToolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(mToolbar);
- mActionBar = getSupportActionBar();
+ Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ setSupportActionBar(toolbar);
+ ActionBar actionBar = getSupportActionBar();
mPreferences = PreferenceManager.getInstance();
mDarkTheme = mPreferences.getUseDarkTheme() || isIncognito();
@@ -161,7 +174,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
mUiLayout = (LinearLayout) findViewById(R.id.ui_layout);
mProgressBar = (AnimatedProgressBar) findViewById(R.id.progress_view);
- mNewTab = (RelativeLayout) findViewById(R.id.new_tab_button);
+ RelativeLayout newTab = (RelativeLayout) findViewById(R.id.new_tab_button);
mDrawerLeft = (LinearLayout) findViewById(R.id.left_drawer);
// Drawer stutters otherwise
mDrawerLeft.setLayerType(View.LAYER_TYPE_HARDWARE, null);
@@ -189,22 +202,22 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
mHistoryDatabase = HistoryDatabase.getInstance(getApplicationContext());
// set display options of the ActionBar
- mActionBar.setDisplayShowTitleEnabled(false);
- mActionBar.setDisplayShowHomeEnabled(false);
- mActionBar.setDisplayShowCustomEnabled(true);
- mActionBar.setCustomView(R.layout.toolbar_content);
+ actionBar.setDisplayShowTitleEnabled(false);
+ actionBar.setDisplayShowHomeEnabled(false);
+ actionBar.setDisplayShowCustomEnabled(true);
+ actionBar.setCustomView(R.layout.toolbar_content);
- View v = mActionBar.getCustomView();
+ View v = actionBar.getCustomView();
LayoutParams lp = v.getLayoutParams();
lp.width = LayoutParams.MATCH_PARENT;
v.setLayoutParams(lp);
mArrowDrawable = new DrawerArrowDrawable(this);
- mArrowImage = (ImageView) mActionBar.getCustomView().findViewById(R.id.arrow);
+ mArrowImage = (ImageView) actionBar.getCustomView().findViewById(R.id.arrow);
// Use hardware acceleration for the animation
mArrowImage.setLayerType(View.LAYER_TYPE_HARDWARE, null);
mArrowImage.setImageDrawable(mArrowDrawable);
- LinearLayout arrowButton = (LinearLayout) mActionBar.getCustomView().findViewById(
+ LinearLayout arrowButton = (LinearLayout) actionBar.getCustomView().findViewById(
R.id.arrow_button);
arrowButton.setOnClickListener(this);
@@ -215,8 +228,8 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
forward.setOnClickListener(this);
// create the search EditText in the ToolBar
- mSearch = (AutoCompleteTextView) mActionBar.getCustomView().findViewById(R.id.search);
- mUntitledTitle = (String) getString(R.string.untitled);
+ mSearch = (AutoCompleteTextView) actionBar.getCustomView().findViewById(R.id.search);
+ mUntitledTitle = getString(R.string.untitled);
mBackgroundColor = getResources().getColor(R.color.primary_color);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
mDeleteIcon = getResources().getDrawable(R.drawable.ic_action_delete);
@@ -267,8 +280,8 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
});
initialize.run();
- mNewTab.setOnClickListener(this);
- mNewTab.setOnLongClickListener(new OnLongClickListener() {
+ newTab.setOnClickListener(this);
+ newTab.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
@@ -484,7 +497,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
* If Orbot/Tor is installed, prompt the user if they want to enable
* proxying for this session
*/
- public boolean checkForTor() {
+ private boolean checkForTor() {
boolean useProxy = mPreferences.getUseProxy();
OrbotHelper oh = new OrbotHelper(this);
@@ -522,7 +535,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
/*
* Initialize WebKit Proxying for Tor
*/
- public void initializeTor() {
+ private void initializeTor() {
OrbotHelper oh = new OrbotHelper(this);
if (!oh.isOrbotRunning()) {
@@ -531,7 +544,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
try {
String host = mPreferences.getProxyHost();
int port = mPreferences.getProxyPort();
- WebkitProxy.setProxy(this.getPackageName() + ".BrowserApp", getApplicationContext(),
+ WebkitProxy.setProxy(BrowserApp.class.getName(), getApplicationContext(),
host, port);
} catch (Exception e) {
Log.d(Constants.TAG, "error enabling web proxying", e);
@@ -601,12 +614,12 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
mPreferences.setMemoryUrl("");
String[] array = Utils.getArray(mem);
int count = 0;
- for (int n = 0; n < array.length; n++) {
- if (array[n].length() > 0) {
- if (url != null && url.compareTo(array[n]) == 0) {
+ for (String urlString : array) {
+ if (urlString.length() > 0) {
+ if (url != null && url.compareTo(urlString) == 0) {
url = null;
}
- newTab(array[n], true);
+ newTab(urlString, true);
count++;
}
}
@@ -627,7 +640,6 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
mFullScreen = mPreferences.getFullScreenEnabled();
mColorMode = mPreferences.getColorModeEnabled();
mColorMode &= !mDarkTheme;
-
if (!isIncognito() && !mColorMode && !mDarkTheme && mWebpageBitmap != null) {
changeToolbarBackground(mWebpageBitmap);
} else if (!isIncognito() && mCurrentView != null && !mDarkTheme
@@ -695,7 +707,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
initializeTor();
} else {
try {
- WebkitProxy.resetProxy(mActivity.getPackageName() + ".BrowserApp",
+ WebkitProxy.resetProxy(BrowserApp.class.getName(),
getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
@@ -995,7 +1007,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
/**
* Takes in the id of which bookmark was selected and shows a dialog that
* allows the user to rename and change the url of the bookmark
- *
+ *
* @param id
* which id in the list was chosen
*/
@@ -1039,7 +1051,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
/**
* displays the WebView contained in the LightningView Also handles the
* removal of previous views
- *
+ *
* @param view
* the LightningView to show
*/
@@ -1444,13 +1456,13 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
public class LightningViewAdapter extends ArrayAdapter {
- Context context;
+ final Context context;
ColorMatrix colorMatrix;
ColorMatrixColorFilter filter;
Paint paint;
- int layoutResourceId;
+ final int layoutResourceId;
List data = null;
- CloseTabListener mExitListener;
+ final CloseTabListener mExitListener;
public LightningViewAdapter(Context context, int layoutResourceId, List data) {
super(context, layoutResourceId, data);
@@ -1463,7 +1475,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
- LightningViewHolder holder = null;
+ LightningViewHolder holder;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
@@ -1533,54 +1545,54 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
}
private void changeToolbarBackground(Bitmap favicon) {
- android.support.v7.graphics.Palette.generateAsync(favicon,
- new android.support.v7.graphics.Palette.PaletteAsyncListener() {
+ Palette.from(favicon).generate(new Palette.PaletteAsyncListener() {
+ @Override
+ public void onGenerated(Palette palette) {
+
+ // OR with opaque black to remove transparency glitches
+ int color = 0xff000000 | palette.getVibrantColor(mActivity.getResources()
+ .getColor(R.color.primary_color));
+
+ int finalColor; // Lighten up the dark color if it is
+ // too dark
+ if (isColorTooDark(color)) {
+ finalColor = mixTwoColors(
+ mActivity.getResources().getColor(R.color.primary_color),
+ color, 0.25f);
+ } else {
+ finalColor = color;
+ }
- @Override
- public void onGenerated(Palette palette) {
- // OR with opaque black to remove transparency glitches
- int color = 0xff000000 | palette.getVibrantColor(mActivity.getResources()
- .getColor(R.color.primary_color));
-
- int finalColor; // Lighten up the dark color if it is
- // too dark
- if (isColorTooDark(color)) {
- finalColor = mixTwoColors(
- mActivity.getResources().getColor(R.color.primary_color),
- color, 0.25f);
- } else {
- finalColor = color;
- }
+ ValueAnimator anim = ValueAnimator.ofObject(new ArgbEvaluator(),
+ mBackground.getColor(), finalColor);
- ValueAnimator anim = ValueAnimator.ofObject(new ArgbEvaluator(),
- mBackground.getColor(), finalColor);
+ anim.addUpdateListener(new AnimatorUpdateListener() {
- anim.addUpdateListener(new AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ int color = (Integer) animation.getAnimatedValue();
+ mBackground.setColor(color);
+ getWindow().setBackgroundDrawable(mBackground);
+ mToolbarLayout.setBackgroundColor(color);
+ }
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- int color = (Integer) animation.getAnimatedValue();
- mBackground.setColor(color);
- getWindow().setBackgroundDrawable(mBackground);
- mToolbarLayout.setBackgroundColor(color);
- }
+ });
- });
+ anim.setDuration(300);
+ anim.start();
- anim.setDuration(300);
- anim.start();
- }
- });
+ }
+ });
}
public static boolean isColorTooDark(int color) {
final byte RED_CHANNEL = 16;
final byte GREEN_CHANNEL = 8;
- final byte BLUE_CHANNEL = 0;
+ //final byte BLUE_CHANNEL = 0;
int r = ((int) ((float) (color >> RED_CHANNEL & 0xff) * 0.3f)) & 0xff;
int g = ((int) ((float) (color >> GREEN_CHANNEL & 0xff) * 0.59)) & 0xff;
- int b = ((int) ((float) (color >> BLUE_CHANNEL & 0xff) * 0.11)) & 0xff;
+ int b = ((int) ((float) (color & 0xff) * 0.11)) & 0xff;
int gr = (r + g + b) & 0xff;
int gray = gr + (gr << GREEN_CHANNEL) + (gr << RED_CHANNEL);
@@ -1591,7 +1603,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
final byte ALPHA_CHANNEL = 24;
final byte RED_CHANNEL = 16;
final byte GREEN_CHANNEL = 8;
- final byte BLUE_CHANNEL = 0;
+ //final byte BLUE_CHANNEL = 0;
final float inverseAmount = 1.0f - amount;
@@ -1599,14 +1611,14 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
int g = ((int) (((float) (color1 >> GREEN_CHANNEL & 0xff) * amount) + ((float) (color2 >> GREEN_CHANNEL & 0xff) * inverseAmount))) & 0xff;
int b = ((int) (((float) (color1 & 0xff) * amount) + ((float) (color2 & 0xff) * inverseAmount))) & 0xff;
- return 0xff << ALPHA_CHANNEL | r << RED_CHANNEL | g << GREEN_CHANNEL | b << BLUE_CHANNEL;
+ return 0xff << ALPHA_CHANNEL | r << RED_CHANNEL | g << GREEN_CHANNEL | b;
}
public class BookmarkViewAdapter extends ArrayAdapter {
- Context context;
+ final Context context;
List data = null;
- int layoutResourceId;
+ final int layoutResourceId;
public BookmarkViewAdapter(Context context, int layoutResourceId, List data) {
super(context, layoutResourceId, data);
@@ -1618,7 +1630,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
- BookmarkViewHolder holder = null;
+ BookmarkViewHolder holder;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
@@ -1655,8 +1667,8 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
private class DownloadImageTask extends AsyncTask {
- ImageView bmImage;
- HistoryItem mWeb;
+ final ImageView bmImage;
+ final HistoryItem mWeb;
public DownloadImageTask(ImageView bmImage, HistoryItem web) {
this.bmImage = bmImage;
@@ -1837,14 +1849,13 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
public boolean getSystemBrowser() {
Cursor c = null;
String[] columns = new String[] { "url", "title" };
- boolean browserFlag = false;
+ boolean browserFlag;
try {
Uri bookmarks = Browser.BOOKMARKS_URI;
c = getContentResolver().query(bookmarks, columns, null, null, null);
- } catch (SQLiteException ignored) {
- } catch (IllegalStateException ignored) {
- } catch (NullPointerException ignored) {
+ } catch (SQLiteException | IllegalStateException | NullPointerException e) {
+ e.printStackTrace();
}
if (c != null) {
@@ -1856,7 +1867,6 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
}
if (c != null) {
c.close();
- c = null;
}
mPreferences.setSystemBrowserPresent(browserFlag);
return browserFlag;
@@ -1884,7 +1894,6 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
getUrl.setText(url);
}
searchTheWeb(url);
- url = null;
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getUrl.getWindowToken(), 0);
if (mCurrentView != null) {
@@ -2030,7 +2039,6 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
mFilePathCallback.onReceiveValue(results);
mFilePathCallback = null;
- return;
}
@Override
@@ -2181,7 +2189,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
/**
* turns on fullscreen mode in the app
- *
+ *
* @param enabled
* whether to enable fullscreen or not
*/
@@ -2358,7 +2366,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
@Override
/**
- * handles a long click on the page, parameter String url
+ * handles a long click on the page, parameter String url
* is the url that should have been obtained from the WebView touch node
* thingy, if it is null, this method tries to deal with it and find a workaround
*/
@@ -2571,7 +2579,7 @@ public class BrowserActivity extends ThemableActivity implements BrowserControll
/**
* handle presses on the refresh icon in the search bar, if the page is
* loading, stop the page, if it is done loading refresh the page.
- *
+ *
* See setIsFinishedLoading and setIsLoading for displaying the correct icon
*/
public void refreshOrStop() {
diff --git a/src/acr/browser/lightning/BrowserApp.java b/app/src/main/java/acr/browser/lightning/activity/BrowserApp.java
similarity index 88%
rename from src/acr/browser/lightning/BrowserApp.java
rename to app/src/main/java/acr/browser/lightning/activity/BrowserApp.java
index 5b49829..98a6850 100644
--- a/src/acr/browser/lightning/BrowserApp.java
+++ b/app/src/main/java/acr/browser/lightning/activity/BrowserApp.java
@@ -1,4 +1,4 @@
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.app.Application;
import android.content.Context;
diff --git a/src/acr/browser/lightning/DisplaySettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/DisplaySettingsActivity.java
similarity index 97%
rename from src/acr/browser/lightning/DisplaySettingsActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/DisplaySettingsActivity.java
index 256e78f..712e8c3 100644
--- a/src/acr/browser/lightning/DisplaySettingsActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/DisplaySettingsActivity.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
@@ -15,6 +15,9 @@ import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RelativeLayout;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.R;
+
public class DisplaySettingsActivity extends ThemableSettingsActivity {
// mPreferences variables
diff --git a/src/acr/browser/lightning/GeneralSettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/GeneralSettingsActivity.java
similarity index 98%
rename from src/acr/browser/lightning/GeneralSettingsActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/GeneralSettingsActivity.java
index 565e999..ece6f6e 100644
--- a/src/acr/browser/lightning/GeneralSettingsActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/GeneralSettingsActivity.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.app.Activity;
import android.app.AlertDialog;
@@ -23,6 +23,11 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import acr.browser.lightning.constant.Constants;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.R;
+import acr.browser.lightning.utils.Utils;
+
public class GeneralSettingsActivity extends ThemableSettingsActivity {
// mPreferences variables
diff --git a/src/acr/browser/lightning/IncognitoActivity.java b/app/src/main/java/acr/browser/lightning/activity/IncognitoActivity.java
similarity index 92%
rename from src/acr/browser/lightning/IncognitoActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/IncognitoActivity.java
index 6d7c804..2595845 100644
--- a/src/acr/browser/lightning/IncognitoActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/IncognitoActivity.java
@@ -1,4 +1,4 @@
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.content.Intent;
import android.os.Build;
@@ -7,6 +7,9 @@ import android.view.Menu;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.R;
+
@SuppressWarnings("deprecation")
public class IncognitoActivity extends BrowserActivity {
diff --git a/src/acr/browser/lightning/LicenseActivity.java b/app/src/main/java/acr/browser/lightning/activity/LicenseActivity.java
similarity index 96%
rename from src/acr/browser/lightning/LicenseActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/LicenseActivity.java
index 2b19bb4..97aeb4f 100644
--- a/src/acr/browser/lightning/LicenseActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/LicenseActivity.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.content.Intent;
import android.net.Uri;
@@ -10,6 +10,8 @@ import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
+import acr.browser.lightning.R;
+
/*
*NOTE: This activity must not be removed in order to comply with the Mozilla Public License v. 2.0
*under which this code is licensed. Unless you plan on providing other attribution in the app to
diff --git a/src/acr/browser/lightning/MainActivity.java b/app/src/main/java/acr/browser/lightning/activity/MainActivity.java
similarity index 92%
rename from src/acr/browser/lightning/MainActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/MainActivity.java
index 6cee58a..ab8d744 100644
--- a/src/acr/browser/lightning/MainActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/MainActivity.java
@@ -1,4 +1,4 @@
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.content.Intent;
import android.os.Build;
@@ -7,6 +7,9 @@ import android.view.Menu;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.R;
+
@SuppressWarnings("deprecation")
public class MainActivity extends BrowserActivity {
diff --git a/src/acr/browser/lightning/PrivacySettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/PrivacySettingsActivity.java
similarity index 97%
rename from src/acr/browser/lightning/PrivacySettingsActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/PrivacySettingsActivity.java
index 6b9f489..68220ef 100644
--- a/src/acr/browser/lightning/PrivacySettingsActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/PrivacySettingsActivity.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.app.AlertDialog;
import android.content.Context;
@@ -22,6 +22,11 @@ import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import acr.browser.lightning.database.HistoryDatabase;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.R;
+import acr.browser.lightning.utils.Utils;
+
public class PrivacySettingsActivity extends ThemableSettingsActivity {
// mPreferences variables
@@ -139,7 +144,7 @@ public class PrivacySettingsActivity extends ThemableSettingsActivity {
private static class MessageHandler extends Handler {
- Context mHandlerContext;
+ final Context mHandlerContext;
public MessageHandler(Context context) {
this.mHandlerContext = context;
diff --git a/src/acr/browser/lightning/ReadingActivity.java b/app/src/main/java/acr/browser/lightning/activity/ReadingActivity.java
similarity index 94%
rename from src/acr/browser/lightning/ReadingActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/ReadingActivity.java
index 573d1a3..75bb05c 100644
--- a/src/acr/browser/lightning/ReadingActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/ReadingActivity.java
@@ -1,10 +1,5 @@
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
-import java.util.ArrayList;
-import java.util.List;
-
-import acr.browser.lightning.reading.HtmlFetcher;
-import acr.browser.lightning.reading.JResult;
import android.animation.ObjectAnimator;
import android.app.AlertDialog;
import android.app.ProgressDialog;
@@ -14,7 +9,7 @@ import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
-import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -24,7 +19,17 @@ import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
-public class ReadingActivity extends ActionBarActivity {
+import java.util.ArrayList;
+import java.util.List;
+
+import acr.browser.lightning.R;
+import acr.browser.lightning.constant.Constants;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.reading.HtmlFetcher;
+import acr.browser.lightning.reading.JResult;
+import acr.browser.lightning.utils.Utils;
+
+public class ReadingActivity extends AppCompatActivity {
private TextView mTitle;
private TextView mBody;
@@ -110,7 +115,7 @@ public class ReadingActivity extends ActionBarActivity {
private class PageLoader extends AsyncTask {
- private Context mContext;
+ private final Context mContext;
private ProgressDialog mProgressDialog;
private String mTitleText;
private List mBodyText;
diff --git a/src/acr/browser/lightning/SettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java
similarity index 97%
rename from src/acr/browser/lightning/SettingsActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java
index d286a28..c5a8b92 100644
--- a/src/acr/browser/lightning/SettingsActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.annotation.SuppressLint;
import android.app.Activity;
@@ -23,11 +23,16 @@ import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.RelativeLayout;
+
+import acr.browser.lightning.constant.Constants;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.R;
+import acr.browser.lightning.utils.Utils;
import info.guardianproject.onionkit.ui.OrbotHelper;
public class SettingsActivity extends ThemableSettingsActivity {
- private static int API = android.os.Build.VERSION.SDK_INT;
+ private static final int API = android.os.Build.VERSION.SDK_INT;
private PreferenceManager mPreferences;
private Context mContext;
private Activity mActivity;
diff --git a/src/acr/browser/lightning/ThemableActivity.java b/app/src/main/java/acr/browser/lightning/activity/ThemableActivity.java
similarity index 74%
rename from src/acr/browser/lightning/ThemableActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/ThemableActivity.java
index fb112f7..3b80b75 100644
--- a/src/acr/browser/lightning/ThemableActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/ThemableActivity.java
@@ -1,10 +1,13 @@
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.AppCompatActivity;
-public abstract class ThemableActivity extends ActionBarActivity {
+import acr.browser.lightning.R;
+import acr.browser.lightning.preference.PreferenceManager;
+
+public abstract class ThemableActivity extends AppCompatActivity {
private boolean mDark;
diff --git a/src/acr/browser/lightning/ThemableSettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/ThemableSettingsActivity.java
similarity index 74%
rename from src/acr/browser/lightning/ThemableSettingsActivity.java
rename to app/src/main/java/acr/browser/lightning/activity/ThemableSettingsActivity.java
index a11632a..1955e59 100644
--- a/src/acr/browser/lightning/ThemableSettingsActivity.java
+++ b/app/src/main/java/acr/browser/lightning/activity/ThemableSettingsActivity.java
@@ -1,10 +1,13 @@
-package acr.browser.lightning;
+package acr.browser.lightning.activity;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.AppCompatActivity;
-public abstract class ThemableSettingsActivity extends ActionBarActivity {
+import acr.browser.lightning.R;
+import acr.browser.lightning.preference.PreferenceManager;
+
+public abstract class ThemableSettingsActivity extends AppCompatActivity {
private boolean mDark;
diff --git a/src/acr/browser/lightning/BookmarkPage.java b/app/src/main/java/acr/browser/lightning/constant/BookmarkPage.java
similarity index 93%
rename from src/acr/browser/lightning/BookmarkPage.java
rename to app/src/main/java/acr/browser/lightning/constant/BookmarkPage.java
index d1d130d..4d6367c 100644
--- a/src/acr/browser/lightning/BookmarkPage.java
+++ b/app/src/main/java/acr/browser/lightning/constant/BookmarkPage.java
@@ -1,7 +1,10 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.constant;
+
+import acr.browser.lightning.R;
+import acr.browser.lightning.activity.BrowserApp;
public class BookmarkPage {
diff --git a/src/acr/browser/lightning/Constants.java b/app/src/main/java/acr/browser/lightning/constant/Constants.java
similarity index 96%
rename from src/acr/browser/lightning/Constants.java
rename to app/src/main/java/acr/browser/lightning/constant/Constants.java
index 5a4aa9f..f8a25ce 100644
--- a/src/acr/browser/lightning/Constants.java
+++ b/app/src/main/java/acr/browser/lightning/constant/Constants.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.constant;
import android.os.Environment;
@@ -14,7 +14,6 @@ public final class Constants {
public static final String DESKTOP_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36";
public static final String MOBILE_USER_AGENT = "Mozilla/5.0 (Linux; U; Android 4.4; en-us; Nexus 4 Build/JOP24G) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30";
- public static final int API = android.os.Build.VERSION.SDK_INT;
public static final String YAHOO_SEARCH = "https://search.yahoo.com/search?p=";
public static final String GOOGLE_SEARCH = "https://www.google.com/search?client=lightning&ie=UTF-8&oe=UTF-8&q=";
public static final String BING_SEARCH = "https://www.bing.com/search?q=";
diff --git a/src/acr/browser/lightning/HistoryPage.java b/app/src/main/java/acr/browser/lightning/constant/HistoryPage.java
similarity index 93%
rename from src/acr/browser/lightning/HistoryPage.java
rename to app/src/main/java/acr/browser/lightning/constant/HistoryPage.java
index 2ec79d8..109f026 100644
--- a/src/acr/browser/lightning/HistoryPage.java
+++ b/app/src/main/java/acr/browser/lightning/constant/HistoryPage.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.constant;
import java.io.File;
import java.io.FileWriter;
@@ -11,6 +11,11 @@ import java.util.List;
import android.content.Context;
+import acr.browser.lightning.activity.BrowserApp;
+import acr.browser.lightning.database.HistoryItem;
+import acr.browser.lightning.R;
+import acr.browser.lightning.database.HistoryDatabase;
+
public class HistoryPage {
private static final String FILENAME = "history.html";
diff --git a/src/acr/browser/lightning/HomepageVariables.java b/app/src/main/java/acr/browser/lightning/constant/StartPage.java
similarity index 94%
rename from src/acr/browser/lightning/HomepageVariables.java
rename to app/src/main/java/acr/browser/lightning/constant/StartPage.java
index de59fa1..3a1beb5 100644
--- a/src/acr/browser/lightning/HomepageVariables.java
+++ b/app/src/main/java/acr/browser/lightning/constant/StartPage.java
@@ -1,9 +1,12 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.constant;
-public class HomepageVariables {
+import acr.browser.lightning.activity.BrowserApp;
+import acr.browser.lightning.R;
+
+public class StartPage {
public static final String HEAD = ""
+ ""
diff --git a/app/src/main/java/acr/browser/lightning/controller/BrowserController.java b/app/src/main/java/acr/browser/lightning/controller/BrowserController.java
new file mode 100644
index 0000000..8fdbd53
--- /dev/null
+++ b/app/src/main/java/acr/browser/lightning/controller/BrowserController.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2014 A.C.R. Development
+ */
+package acr.browser.lightning.controller;
+
+import android.app.Activity;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.Message;
+import android.view.View;
+import android.webkit.ValueCallback;
+import android.webkit.WebChromeClient.CustomViewCallback;
+import android.webkit.WebView;
+
+public interface BrowserController {
+
+ void updateUrl(String title, boolean shortUrl);
+
+ void updateProgress(int n);
+
+ void updateHistory(String title, String url);
+
+ void openFileChooser(ValueCallback uploadMsg);
+
+ void update();
+
+ void onLongPress();
+
+ void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback);
+
+ void onHideCustomView();
+
+ Bitmap getDefaultVideoPoster();
+
+ View getVideoLoadingProgressView();
+
+ void onCreateWindow(boolean isUserGesture, Message resultMsg);
+
+ Activity getActivity();
+
+ void hideActionBar();
+
+ void showActionBar();
+
+ void toggleActionBar();
+
+ void longClickPage(String url);
+
+ void openBookmarkPage(WebView view);
+
+ void showFileChooser(ValueCallback filePathCallback);
+
+ void closeEmptyTab();
+
+ boolean isIncognito();
+
+ int getMenu();
+}
diff --git a/src/acr/browser/lightning/BookmarkManager.java b/app/src/main/java/acr/browser/lightning/database/BookmarkManager.java
similarity index 85%
rename from src/acr/browser/lightning/BookmarkManager.java
rename to app/src/main/java/acr/browser/lightning/database/BookmarkManager.java
index 4442432..b42ebb6 100644
--- a/src/acr/browser/lightning/BookmarkManager.java
+++ b/app/src/main/java/acr/browser/lightning/database/BookmarkManager.java
@@ -1,9 +1,17 @@
-package acr.browser.lightning;
+package acr.browser.lightning.database;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.os.Environment;
+import android.provider.Browser;
+import android.widget.Toast;
+
+import org.json.JSONException;
+import org.json.JSONObject;
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;
@@ -15,24 +23,20 @@ import java.util.Locale;
import java.util.SortedMap;
import java.util.TreeMap;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.os.Environment;
-import android.provider.Browser;
-import android.widget.Toast;
+import acr.browser.lightning.R;
+import acr.browser.lightning.constant.Constants;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.utils.Utils;
public class BookmarkManager {
- private Context mContext;
+ private final Context mContext;
private static final String TITLE = "title";
private static final String URL = "url";
private static final String FOLDER = "folder";
private static final String ORDER = "order";
private static final String FILE_BOOKMARKS = "bookmarks.dat";
- private static SortedMap mBookmarkMap = new TreeMap(
+ private static SortedMap mBookmarkMap = new TreeMap<>(
String.CASE_INSENSITIVE_ORDER);
private static BookmarkManager mInstance;
@@ -69,9 +73,7 @@ public class BookmarkManager {
bookmarkWriter.newLine();
bookmarkWriter.close();
mBookmarkMap.put(item.getUrl(), 1);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSONException e) {
+ } catch (IOException | JSONException e) {
e.printStackTrace();
}
return true;
@@ -99,9 +101,7 @@ public class BookmarkManager {
}
}
bookmarkWriter.close();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSONException e) {
+ } catch (IOException | JSONException e) {
e.printStackTrace();
}
}
@@ -112,7 +112,7 @@ public class BookmarkManager {
* @param url
*/
public synchronized boolean deleteBookmark(String url) {
- List list = new ArrayList();
+ List list;
if (url == null) {
return false;
}
@@ -136,9 +136,7 @@ public class BookmarkManager {
}
}
fileWriter.close();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSONException e) {
+ } catch (IOException | JSONException e) {
e.printStackTrace();
}
return bookmarkDeleted;
@@ -177,9 +175,7 @@ public class BookmarkManager {
mContext,
mContext.getString(R.string.bookmark_export_path) + " "
+ bookmarksExport.getPath(), Toast.LENGTH_SHORT).show();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSONException e) {
+ } catch (IOException | JSONException e) {
e.printStackTrace();
}
@@ -191,7 +187,7 @@ public class BookmarkManager {
* @return
*/
public synchronized List getBookmarks(boolean sort) {
- List bookmarks = new ArrayList();
+ List bookmarks = new ArrayList<>();
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
try {
BufferedReader bookmarksReader = new BufferedReader(new FileReader(bookmarksFile));
@@ -207,11 +203,7 @@ public class BookmarkManager {
bookmarks.add(item);
}
bookmarksReader.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSONException e) {
+ } catch (IOException | JSONException e) {
e.printStackTrace();
}
if (sort) {
@@ -227,7 +219,7 @@ public class BookmarkManager {
* @return
*/
public synchronized List getBookmarksFromFolder(String folder) {
- List bookmarks = new ArrayList();
+ List bookmarks = new ArrayList<>();
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
try {
BufferedReader bookmarksReader = new BufferedReader(new FileReader(bookmarksFile));
@@ -245,11 +237,7 @@ public class BookmarkManager {
}
}
bookmarksReader.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSONException e) {
+ } catch (IOException | JSONException e) {
e.printStackTrace();
}
return bookmarks;
@@ -261,7 +249,7 @@ public class BookmarkManager {
* @return
*/
private synchronized SortedMap getBookmarkUrls() {
- SortedMap map = new TreeMap(String.CASE_INSENSITIVE_ORDER);
+ SortedMap map = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
try {
BufferedReader bookmarksReader = new BufferedReader(new FileReader(bookmarksFile));
@@ -271,11 +259,7 @@ public class BookmarkManager {
map.put(object.getString(URL), 1);
}
bookmarksReader.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSONException e) {
+ } catch (JSONException | IOException e) {
e.printStackTrace();
}
return map;
@@ -287,8 +271,8 @@ public class BookmarkManager {
* @return
*/
public synchronized List getFolders() {
- List folders = new ArrayList();
- SortedMap folderMap = new TreeMap(
+ List folders = new ArrayList<>();
+ SortedMap folderMap = new TreeMap<>(
String.CASE_INSENSITIVE_ORDER);
File bookmarksFile = new File(mContext.getFilesDir(), FILE_BOOKMARKS);
try {
@@ -306,11 +290,7 @@ public class BookmarkManager {
}
}
bookmarksReader.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSONException e) {
+ } catch (IOException | JSONException e) {
e.printStackTrace();
}
return folders;
@@ -323,7 +303,7 @@ public class BookmarkManager {
public synchronized void importBookmarksFromBrowser(Context context) {
if (PreferenceManager.getInstance().getSystemBrowserPresent()) {
- List bookmarkList = new ArrayList();
+ List bookmarkList = new ArrayList<>();
String[] columns = new String[] { Browser.BookmarkColumns.TITLE,
Browser.BookmarkColumns.URL };
String selection = Browser.BookmarkColumns.BOOKMARK + " = 1";
@@ -367,7 +347,7 @@ public class BookmarkManager {
if (file == null) {
return;
}
- List list = new ArrayList();
+ List list = new ArrayList<>();
try {
BufferedReader bookmarksReader = new BufferedReader(new FileReader(file));
String line;
@@ -386,17 +366,7 @@ public class BookmarkManager {
addBookmarkList(list);
Utils.showToast(mContext,
number + " " + mContext.getResources().getString(R.string.message_import));
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- Utils.createInformativeDialog(context,
- mContext.getResources().getString(R.string.title_error), mContext
- .getResources().getString(R.string.import_bookmark_error));
- } catch (IOException e) {
- e.printStackTrace();
- Utils.createInformativeDialog(context,
- mContext.getResources().getString(R.string.title_error), mContext
- .getResources().getString(R.string.import_bookmark_error));
- } catch (JSONException e) {
+ } catch (IOException | JSONException e) {
e.printStackTrace();
Utils.createInformativeDialog(context,
mContext.getResources().getString(R.string.title_error), mContext
@@ -425,9 +395,7 @@ public class BookmarkManager {
bookmarkWriter.newLine();
}
bookmarkWriter.close();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (JSONException e) {
+ } catch (IOException | JSONException e) {
e.printStackTrace();
}
}
diff --git a/src/acr/browser/lightning/HistoryDatabase.java b/app/src/main/java/acr/browser/lightning/database/HistoryDatabase.java
similarity index 96%
rename from src/acr/browser/lightning/HistoryDatabase.java
rename to app/src/main/java/acr/browser/lightning/database/HistoryDatabase.java
index 6ece034..a12e8c4 100644
--- a/src/acr/browser/lightning/HistoryDatabase.java
+++ b/app/src/main/java/acr/browser/lightning/database/HistoryDatabase.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.database;
import android.content.ContentValues;
import android.content.Context;
@@ -11,6 +11,8 @@ import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
+import acr.browser.lightning.R;
+
public class HistoryDatabase extends SQLiteOpenHelper {
// All Static variables
@@ -90,6 +92,7 @@ public class HistoryDatabase extends SQLiteOpenHelper {
} else {
addHistoryItem(new HistoryItem(url, title));
}
+ q.close();
}
public synchronized void addHistoryItem(HistoryItem item) {
@@ -114,7 +117,7 @@ public class HistoryDatabase extends SQLiteOpenHelper {
}
public List findItemsContaining(String search) {
- List itemList = new ArrayList();
+ List itemList = new ArrayList<>();
String selectQuery = "SELECT * FROM " + TABLE_HISTORY + " WHERE " + KEY_TITLE + " LIKE '%"
+ search + "%' OR " + KEY_URL + " LIKE '%" + search + "%' " + "ORDER BY "
+ KEY_TIME_VISITED + " DESC LIMIT 5";
@@ -137,7 +140,7 @@ public class HistoryDatabase extends SQLiteOpenHelper {
}
public List getLastHundredItems() {
- List itemList = new ArrayList();
+ List itemList = new ArrayList<>();
String selectQuery = "SELECT * FROM " + TABLE_HISTORY + " ORDER BY " + KEY_TIME_VISITED
+ " DESC";
@@ -159,7 +162,7 @@ public class HistoryDatabase extends SQLiteOpenHelper {
}
public List getAllHistoryItems() {
- List itemList = new ArrayList();
+ List itemList = new ArrayList<>();
String selectQuery = "SELECT * FROM " + TABLE_HISTORY + " ORDER BY " + KEY_TIME_VISITED
+ " DESC";
diff --git a/src/acr/browser/lightning/HistoryItem.java b/app/src/main/java/acr/browser/lightning/database/HistoryItem.java
similarity index 92%
rename from src/acr/browser/lightning/HistoryItem.java
rename to app/src/main/java/acr/browser/lightning/database/HistoryItem.java
index e106508..c4741b7 100644
--- a/src/acr/browser/lightning/HistoryItem.java
+++ b/app/src/main/java/acr/browser/lightning/database/HistoryItem.java
@@ -1,9 +1,10 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.database;
import android.graphics.Bitmap;
+import android.support.annotation.NonNull;
public class HistoryItem implements Comparable {
@@ -112,7 +113,7 @@ public class HistoryItem implements Comparable {
}
@Override
- public int compareTo(HistoryItem another) {
+ public int compareTo(@NonNull HistoryItem another) {
return mTitle.compareTo(another.mTitle);
}
@@ -137,10 +138,7 @@ public class HistoryItem implements Comparable {
if (mBitmap != null ? !mBitmap.equals(that.mBitmap) : that.mBitmap != null) {
return false;
}
- if (!mTitle.equals(that.mTitle)) {
- return false;
- }
- return mUrl.equals(that.mUrl);
+ return mTitle.equals(that.mTitle) && mUrl.equals(that.mUrl);
}
@Override
diff --git a/src/acr/browser/lightning/DownloadHandler.java b/app/src/main/java/acr/browser/lightning/download/DownloadHandler.java
similarity index 95%
rename from src/acr/browser/lightning/DownloadHandler.java
rename to app/src/main/java/acr/browser/lightning/download/DownloadHandler.java
index bfd0d40..58f56b0 100644
--- a/src/acr/browser/lightning/DownloadHandler.java
+++ b/app/src/main/java/acr/browser/lightning/download/DownloadHandler.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.download;
import android.app.Activity;
import android.app.AlertDialog;
@@ -20,6 +20,9 @@ import android.webkit.CookieManager;
import android.webkit.URLUtil;
import android.widget.Toast;
+import acr.browser.lightning.R;
+import acr.browser.lightning.preference.PreferenceManager;
+
/**
* Handle download requests
*/
@@ -128,8 +131,8 @@ public class DownloadHandler {
* If the request is coming from a private browsing tab.
*/
/* package */
- static void onDownloadStartNoStream(Activity activity, String url, String userAgent,
- String contentDisposition, String mimetype, boolean privateBrowsing) {
+ private static void onDownloadStartNoStream(Activity activity, String url, String userAgent,
+ String contentDisposition, String mimetype, boolean privateBrowsing) {
String filename = URLUtil.guessFileName(url, contentDisposition, mimetype);
diff --git a/src/acr/browser/lightning/FetchUrlMimeType.java b/app/src/main/java/acr/browser/lightning/download/FetchUrlMimeType.java
similarity index 91%
rename from src/acr/browser/lightning/FetchUrlMimeType.java
rename to app/src/main/java/acr/browser/lightning/download/FetchUrlMimeType.java
index a9ad666..329387b 100644
--- a/src/acr/browser/lightning/FetchUrlMimeType.java
+++ b/app/src/main/java/acr/browser/lightning/download/FetchUrlMimeType.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.download;
import android.app.DownloadManager;
import android.content.Context;
@@ -14,6 +14,8 @@ import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
+import acr.browser.lightning.R;
+
/**
* This class is used to pull down the http headers of a given URL so that we
* can analyse the mimetype and make any correction needed before we give the
@@ -24,15 +26,15 @@ import java.net.URL;
*/
public class FetchUrlMimeType extends Thread {
- private Context mContext;
+ private final Context mContext;
- private DownloadManager.Request mRequest;
+ private final DownloadManager.Request mRequest;
- private String mUri;
+ private final String mUri;
- private String mCookies;
+ private final String mCookies;
- private String mUserAgent;
+ private final String mUserAgent;
public FetchUrlMimeType(Context context, DownloadManager.Request request, String uri,
String cookies, String userAgent) {
@@ -76,10 +78,7 @@ public class FetchUrlMimeType extends Thread {
contentDisposition = contentDispositionHeader;
}
}
- } catch (IllegalArgumentException ex) {
- if (connection != null)
- connection.disconnect();
- } catch (IOException ex) {
+ } catch (IllegalArgumentException | IOException ex) {
if (connection != null)
connection.disconnect();
} finally {
diff --git a/src/acr/browser/lightning/LightningDownloadListener.java b/app/src/main/java/acr/browser/lightning/download/LightningDownloadListener.java
similarity index 84%
rename from src/acr/browser/lightning/LightningDownloadListener.java
rename to app/src/main/java/acr/browser/lightning/download/LightningDownloadListener.java
index 1f155be..241a091 100644
--- a/src/acr/browser/lightning/LightningDownloadListener.java
+++ b/app/src/main/java/acr/browser/lightning/download/LightningDownloadListener.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.download;
import android.app.Activity;
import android.app.AlertDialog;
@@ -10,11 +10,15 @@ import android.util.Log;
import android.webkit.DownloadListener;
import android.webkit.URLUtil;
+import acr.browser.lightning.R;
+import acr.browser.lightning.constant.Constants;
+import acr.browser.lightning.download.DownloadHandler;
+
public class LightningDownloadListener implements DownloadListener {
- private Activity mActivity;
+ private final Activity mActivity;
- LightningDownloadListener(Activity activity) {
+ public LightningDownloadListener(Activity activity) {
mActivity = activity;
}
diff --git a/src/acr/browser/lightning/WebAddress.java b/app/src/main/java/acr/browser/lightning/download/WebAddress.java
similarity index 97%
rename from src/acr/browser/lightning/WebAddress.java
rename to app/src/main/java/acr/browser/lightning/download/WebAddress.java
index f2aa0d3..9d2f87e 100644
--- a/src/acr/browser/lightning/WebAddress.java
+++ b/app/src/main/java/acr/browser/lightning/download/WebAddress.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.download;
import java.util.Locale;
import java.util.regex.Matcher;
@@ -32,7 +32,7 @@ public class WebAddress {
static final int MATCH_GROUP_HOST = 3;
static final int MATCH_GROUP_PORT = 4;
static final int MATCH_GROUP_PATH = 5;
- static Pattern sAddressPattern = Pattern.compile(
+ static final Pattern sAddressPattern = Pattern.compile(
/* scheme */"(?:(http|https|file)\\:\\/\\/)?" +
/* authority */"(?:([-A-Za-z0-9$_.+!*'(),;?&=]+(?:\\:[-A-Za-z0-9$_.+!*'(),;?&=]+)?)@)?" +
/* host */"([" + GOOD_IRI_CHAR + "%_-][" + GOOD_IRI_CHAR + "%_\\.-]*|\\[[0-9a-fA-F:\\.]+\\])?" +
diff --git a/src/acr/browser/lightning/ClickHandler.java b/app/src/main/java/acr/browser/lightning/object/ClickHandler.java
similarity index 86%
rename from src/acr/browser/lightning/ClickHandler.java
rename to app/src/main/java/acr/browser/lightning/object/ClickHandler.java
index 4a9f702..f17020b 100644
--- a/src/acr/browser/lightning/ClickHandler.java
+++ b/app/src/main/java/acr/browser/lightning/object/ClickHandler.java
@@ -1,12 +1,14 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.object;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
+import acr.browser.lightning.controller.BrowserController;
+
public class ClickHandler extends Handler {
private BrowserController mBrowserController;
diff --git a/src/acr/browser/lightning/DrawerArrowDrawable.java b/app/src/main/java/acr/browser/lightning/object/DrawerArrowDrawable.java
similarity index 97%
rename from src/acr/browser/lightning/DrawerArrowDrawable.java
rename to app/src/main/java/acr/browser/lightning/object/DrawerArrowDrawable.java
index 8f44787..a8de763 100644
--- a/src/acr/browser/lightning/DrawerArrowDrawable.java
+++ b/app/src/main/java/acr/browser/lightning/object/DrawerArrowDrawable.java
@@ -1,4 +1,4 @@
-package acr.browser.lightning;
+package acr.browser.lightning.object;
/*
* Copyright (C) 2014 The Android Open Source Project
@@ -30,7 +30,7 @@ import android.support.v7.appcompat.R;
* A drawable that can draw a "Drawer hamburger" menu or an Arrow and animate
* between them.
*/
-class DrawerArrowDrawable extends Drawable {
+public class DrawerArrowDrawable extends Drawable {
private final Paint mPaint = new Paint();
// The angle in degress that the arrow head is inclined at.
private static final float ARROW_HEAD_ANGLE = (float) Math.toRadians(45);
@@ -60,7 +60,7 @@ class DrawerArrowDrawable extends Drawable {
* @param context
* used to get the configuration for the drawable from
*/
- DrawerArrowDrawable(Context context) {
+ public DrawerArrowDrawable(Context context) {
final TypedArray typedArray = context.getTheme().obtainStyledAttributes(null,
R.styleable.DrawerArrowToggle, R.attr.drawerArrowStyle,
R.style.Base_Widget_AppCompat_DrawerArrowToggle);
diff --git a/src/acr/browser/lightning/SearchAdapter.java b/app/src/main/java/acr/browser/lightning/object/SearchAdapter.java
similarity index 93%
rename from src/acr/browser/lightning/SearchAdapter.java
rename to app/src/main/java/acr/browser/lightning/object/SearchAdapter.java
index d130cd8..3cdf447 100644
--- a/src/acr/browser/lightning/SearchAdapter.java
+++ b/app/src/main/java/acr/browser/lightning/object/SearchAdapter.java
@@ -1,4 +1,4 @@
-package acr.browser.lightning;
+package acr.browser.lightning.object;
import java.io.BufferedInputStream;
import java.io.File;
@@ -36,6 +36,12 @@ import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;
+import acr.browser.lightning.R;
+import acr.browser.lightning.database.BookmarkManager;
+import acr.browser.lightning.database.HistoryDatabase;
+import acr.browser.lightning.database.HistoryItem;
+import acr.browser.lightning.preference.PreferenceManager;
+
public class SearchAdapter extends BaseAdapter implements Filterable {
private List mHistory;
@@ -44,26 +50,26 @@ public class SearchAdapter extends BaseAdapter implements Filterable {
private List mFilteredList;
private List mAllBookmarks;
private HistoryDatabase mDatabaseHandler;
- private Context mContext;
+ private final Context mContext;
private boolean mUseGoogle = true;
private boolean mIsExecuting = false;
- private boolean mDarkTheme;
- private boolean mIncognito;
- private BookmarkManager mBookmarkManager;
+ private final boolean mDarkTheme;
+ private final boolean mIncognito;
+ private final BookmarkManager mBookmarkManager;
private static final String ENCODING = "ISO-8859-1";
private static final long INTERVAL_DAY = 86400000;
- private String mSearchSubtitle;
+ private final String mSearchSubtitle;
private static final int API = Build.VERSION.SDK_INT;
- private Theme mTheme;
+ private final Theme mTheme;
private SearchFilter mFilter;
public SearchAdapter(Context context, boolean dark, boolean incognito) {
mDatabaseHandler = HistoryDatabase.getInstance(context.getApplicationContext());
mTheme = context.getTheme();
- mFilteredList = new ArrayList();
- mHistory = new ArrayList();
- mBookmarks = new ArrayList();
- mSuggestions = new ArrayList();
+ mFilteredList = new ArrayList<>();
+ mHistory = new ArrayList<>();
+ mBookmarks = new ArrayList<>();
+ mSuggestions = new ArrayList<>();
mBookmarkManager = BookmarkManager.getInstance(context.getApplicationContext());
mAllBookmarks = mBookmarkManager.getBookmarks(true);
mUseGoogle = PreferenceManager.getInstance().getGoogleSearchSuggestionsEnabled();
@@ -140,7 +146,7 @@ public class SearchAdapter extends BaseAdapter implements Filterable {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
- SuggestionHolder holder = null;
+ SuggestionHolder holder;
if (row == null) {
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
@@ -222,7 +228,7 @@ public class SearchAdapter extends BaseAdapter implements Filterable {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
- if (constraint == null || constraint.toString() == null) {
+ if (constraint == null) {
return results;
}
String query = constraint.toString().toLowerCase(Locale.getDefault());
@@ -231,7 +237,7 @@ public class SearchAdapter extends BaseAdapter implements Filterable {
}
int counter = 0;
- mBookmarks = new ArrayList();
+ mBookmarks = new ArrayList<>();
for (int n = 0; n < mAllBookmarks.size(); n++) {
if (counter >= 5) {
break;
@@ -283,7 +289,7 @@ public class SearchAdapter extends BaseAdapter implements Filterable {
protected List doInBackground(String... arg0) {
mIsExecuting = true;
- List filter = new ArrayList();
+ List filter = new ArrayList<>();
String query = arg0[0];
try {
query = query.replace(" ", "+");
@@ -391,7 +397,7 @@ public class SearchAdapter extends BaseAdapter implements Filterable {
}
public List getSuggestions() {
- List filteredList = new ArrayList();
+ List filteredList = new ArrayList<>();
int suggestionsSize = (mSuggestions == null) ? 0 : mSuggestions.size();
int historySize = (mHistory == null) ? 0 : mHistory.size();
diff --git a/src/acr/browser/lightning/PreferenceManager.java b/app/src/main/java/acr/browser/lightning/preference/PreferenceManager.java
similarity index 98%
rename from src/acr/browser/lightning/PreferenceManager.java
rename to app/src/main/java/acr/browser/lightning/preference/PreferenceManager.java
index 33f82e1..275e93d 100644
--- a/src/acr/browser/lightning/PreferenceManager.java
+++ b/app/src/main/java/acr/browser/lightning/preference/PreferenceManager.java
@@ -1,8 +1,11 @@
-package acr.browser.lightning;
+package acr.browser.lightning.preference;
import android.content.SharedPreferences;
import android.os.Environment;
+import acr.browser.lightning.activity.BrowserApp;
+import acr.browser.lightning.constant.Constants;
+
public class PreferenceManager {
private static class Name {
diff --git a/src/acr/browser/lightning/Reading/ArticleTextExtractor.java b/app/src/main/java/acr/browser/lightning/reading/ArticleTextExtractor.java
similarity index 98%
rename from src/acr/browser/lightning/Reading/ArticleTextExtractor.java
rename to app/src/main/java/acr/browser/lightning/reading/ArticleTextExtractor.java
index 5b6b788..952b253 100644
--- a/src/acr/browser/lightning/Reading/ArticleTextExtractor.java
+++ b/app/src/main/java/acr/browser/lightning/reading/ArticleTextExtractor.java
@@ -127,7 +127,7 @@ public class ArticleTextExtractor {
}
public JResult extractContent(JResult res, Document doc, OutputFormatter formatter)
- throws Exception {
+ throws NullPointerException {
if (doc == null)
throw new NullPointerException("missing document");
@@ -153,7 +153,7 @@ public class ArticleTextExtractor {
}
if (bestMatchElement != null) {
- List images = new ArrayList();
+ List images = new ArrayList<>();
Element imgEl = determineImageSource(bestMatchElement, images);
if (imgEl != null) {
res.setImageUrl(SHelper.replaceSpaces(imgEl.attr("src")));
@@ -321,7 +321,7 @@ public class ArticleTextExtractor {
protected int weightChildNodes(Element rootEl) {
int weight = 0;
Element caption = null;
- List pEls = new ArrayList(5);
+ List pEls = new ArrayList<>(5);
for (Element child : rootEl.children()) {
String ownText = child.ownText();
int ownTextLength = ownText.length();
@@ -373,6 +373,7 @@ public class ArticleTextExtractor {
try {
old = Integer.parseInt(el.attr("gravityScore"));
} catch (Exception ex) {
+ ex.printStackTrace();
}
return old;
}
@@ -444,6 +445,7 @@ public class ArticleTextExtractor {
else
weight -= 20;
} catch (Exception ex) {
+ ex.printStackTrace();
}
int width = 0;
@@ -454,6 +456,7 @@ public class ArticleTextExtractor {
else
weight -= 20;
} catch (Exception ex) {
+ ex.printStackTrace();
}
String alt = e.attr("alt");
if (alt.length() > 35)
@@ -463,7 +466,7 @@ public class ArticleTextExtractor {
if (title.length() > 35)
weight += 20;
- String rel = null;
+ String rel;
boolean noFollow = false;
if (e.parent() != null) {
rel = e.parent().attr("rel");
@@ -561,7 +564,7 @@ public class ArticleTextExtractor {
* @return a set of all important nodes
*/
public Collection getNodes(Document doc) {
- Set nodes = new HashSet(64);
+ Set nodes = new HashSet<>(64);
int score = 100;
for (Element el : doc.select("body").select("*")) {
if (NODES.matcher(el.tagName()).matches()) {
diff --git a/src/acr/browser/lightning/Reading/Converter.java b/app/src/main/java/acr/browser/lightning/reading/Converter.java
similarity index 96%
rename from src/acr/browser/lightning/Reading/Converter.java
rename to app/src/main/java/acr/browser/lightning/reading/Converter.java
index 6178d00..fc1dc37 100644
--- a/src/acr/browser/lightning/Reading/Converter.java
+++ b/app/src/main/java/acr/browser/lightning/reading/Converter.java
@@ -15,13 +15,17 @@
*/
package acr.browser.lightning.reading;
-import java.io.*;
-import java.net.SocketTimeoutException;
+import android.util.Log;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.Locale;
-import acr.browser.lightning.Constants;
-import android.util.Log;
+import acr.browser.lightning.constant.Constants;
/**
* This class is not thread safe. Use one new instance every time due to
@@ -156,8 +160,6 @@ public class Converter {
}
return output.toString(encoding);
- } catch (SocketTimeoutException e) {
- Log.e(Constants.TAG, e.toString() + " url:" + url);
} catch (IOException e) {
Log.e(Constants.TAG, e.toString() + " url:" + url);
} finally {
@@ -165,6 +167,7 @@ public class Converter {
try {
in.close();
} catch (Exception e) {
+ e.printStackTrace();
}
}
}
diff --git a/src/acr/browser/lightning/Reading/HtmlFetcher.java b/app/src/main/java/acr/browser/lightning/reading/HtmlFetcher.java
similarity index 96%
rename from src/acr/browser/lightning/Reading/HtmlFetcher.java
rename to app/src/main/java/acr/browser/lightning/reading/HtmlFetcher.java
index e1032ea..81a62cc 100644
--- a/src/acr/browser/lightning/Reading/HtmlFetcher.java
+++ b/app/src/main/java/acr/browser/lightning/reading/HtmlFetcher.java
@@ -33,7 +33,7 @@ import java.util.zip.GZIPInputStream;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;
-import acr.browser.lightning.Constants;
+import acr.browser.lightning.constant.Constants;
import android.util.Log;
/**
@@ -51,8 +51,8 @@ public class HtmlFetcher {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader("urls.txt"));
- String line = null;
- Set existing = new LinkedHashSet();
+ String line;
+ Set existing = new LinkedHashSet<>();
while ((line = reader.readLine()) != null) {
int index1 = line.indexOf("\"");
int index2 = line.indexOf("\"", index1 + 1);
@@ -81,10 +81,10 @@ public class HtmlFetcher {
private String accept = "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
private String charset = "UTF-8";
private SCache cache;
- private AtomicInteger cacheCounter = new AtomicInteger(0);
+ private final AtomicInteger cacheCounter = new AtomicInteger(0);
private int maxTextLength = -1;
private ArticleTextExtractor extractor = new ArticleTextExtractor();
- private Set furtherResolveNecessary = new LinkedHashSet() {
+ private final Set furtherResolveNecessary = new LinkedHashSet() {
{
add("bit.ly");
add("cli.gs");
@@ -298,13 +298,13 @@ public class HtmlFetcher {
return SHelper.useDomainOfFirstArg4Second(url, urlOrPath);
}
- public String fetchAsString(String urlAsString, int timeout) throws MalformedURLException,
+ public String fetchAsString(String urlAsString, int timeout) throws
IOException {
return fetchAsString(urlAsString, timeout, true);
}
public String fetchAsString(String urlAsString, int timeout, boolean includeSomeGooseOptions)
- throws MalformedURLException, IOException {
+ throws IOException {
HttpURLConnection hConn = createUrlConnection(urlAsString, timeout, includeSomeGooseOptions);
hConn.setInstanceFollowRedirects(true);
String encoding = hConn.getContentEncoding();
@@ -401,7 +401,7 @@ public class HtmlFetcher {
}
protected HttpURLConnection createUrlConnection(String urlAsStr, int timeout,
- boolean includeSomeGooseOptions) throws MalformedURLException, IOException {
+ boolean includeSomeGooseOptions) throws IOException {
URL url = new URL(urlAsStr);
// using proxy may increase latency
HttpURLConnection hConn = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY);
diff --git a/src/acr/browser/lightning/Reading/ImageResult.java b/app/src/main/java/acr/browser/lightning/reading/ImageResult.java
similarity index 74%
rename from src/acr/browser/lightning/Reading/ImageResult.java
rename to app/src/main/java/acr/browser/lightning/reading/ImageResult.java
index fbdf461..85d52d2 100644
--- a/src/acr/browser/lightning/Reading/ImageResult.java
+++ b/app/src/main/java/acr/browser/lightning/reading/ImageResult.java
@@ -9,13 +9,13 @@ import org.jsoup.nodes.Element;
*/
public class ImageResult {
- public String src;
- public Integer weight;
- public String title;
- public int height;
- public int width;
- public String alt;
- public boolean noFollow;
+ public final String src;
+ public final Integer weight;
+ public final String title;
+ public final int height;
+ public final int width;
+ public final String alt;
+ public final boolean noFollow;
public Element element;
public ImageResult(String src, Integer weight, String title, int height, int width, String alt,
diff --git a/src/acr/browser/lightning/Reading/JResult.java b/app/src/main/java/acr/browser/lightning/reading/JResult.java
similarity index 99%
rename from src/acr/browser/lightning/Reading/JResult.java
rename to app/src/main/java/acr/browser/lightning/reading/JResult.java
index b094e3d..c3ff764 100644
--- a/src/acr/browser/lightning/Reading/JResult.java
+++ b/app/src/main/java/acr/browser/lightning/reading/JResult.java
@@ -133,7 +133,7 @@ public class JResult implements Serializable {
public List getTextList() {
if (this.textList == null)
- return new ArrayList();
+ return new ArrayList<>();
return this.textList;
}
diff --git a/src/acr/browser/lightning/Reading/MapEntry.java b/app/src/main/java/acr/browser/lightning/reading/MapEntry.java
similarity index 100%
rename from src/acr/browser/lightning/Reading/MapEntry.java
rename to app/src/main/java/acr/browser/lightning/reading/MapEntry.java
diff --git a/src/acr/browser/lightning/Reading/OutputFormatter.java b/app/src/main/java/acr/browser/lightning/reading/OutputFormatter.java
similarity index 99%
rename from src/acr/browser/lightning/Reading/OutputFormatter.java
rename to app/src/main/java/acr/browser/lightning/reading/OutputFormatter.java
index 2afd0a9..4c5b403 100644
--- a/src/acr/browser/lightning/Reading/OutputFormatter.java
+++ b/app/src/main/java/acr/browser/lightning/reading/OutputFormatter.java
@@ -74,7 +74,7 @@ public class OutputFormatter {
* Takes an element and returns a list of texts extracted from the P tags
*/
public List getTextList(Element topNode) {
- List texts = new ArrayList();
+ List texts = new ArrayList<>();
for (Element element : topNode.select(this.nodesToKeepCssSelector)) {
if (element.hasText()) {
texts.add(element.text());
diff --git a/src/acr/browser/lightning/Reading/SCache.java b/app/src/main/java/acr/browser/lightning/reading/SCache.java
similarity index 100%
rename from src/acr/browser/lightning/Reading/SCache.java
rename to app/src/main/java/acr/browser/lightning/reading/SCache.java
diff --git a/src/acr/browser/lightning/Reading/SHelper.java b/app/src/main/java/acr/browser/lightning/reading/SHelper.java
similarity index 98%
rename from src/acr/browser/lightning/Reading/SHelper.java
rename to app/src/main/java/acr/browser/lightning/reading/SHelper.java
index 7be2ec9..08b0735 100644
--- a/src/acr/browser/lightning/Reading/SHelper.java
+++ b/app/src/main/java/acr/browser/lightning/reading/SHelper.java
@@ -279,11 +279,10 @@ public class SHelper {
if (url.startsWith("http://www.google.com/url?")) {
url = url.substring("http://www.google.com/url?".length());
String arr[] = urlDecode(url).split("\\&");
- if (arr != null)
- for (String str : arr) {
- if (str.startsWith("q="))
- return str.substring("q=".length());
- }
+ for (String str : arr) {
+ if (str.startsWith("q="))
+ return str.substring("q=".length());
+ }
}
return null;
@@ -382,6 +381,7 @@ public class SHelper {
try {
day = Integer.parseInt(str);
} catch (Exception ex) {
+ ex.printStackTrace();
}
if (day < 1 || day > 31) {
day = -1;
diff --git a/src/acr/browser/lightning/AdBlock.java b/app/src/main/java/acr/browser/lightning/utils/AdBlock.java
similarity index 94%
rename from src/acr/browser/lightning/AdBlock.java
rename to app/src/main/java/acr/browser/lightning/utils/AdBlock.java
index 0806cfc..a317f09 100644
--- a/src/acr/browser/lightning/AdBlock.java
+++ b/app/src/main/java/acr/browser/lightning/utils/AdBlock.java
@@ -1,4 +1,4 @@
-package acr.browser.lightning;
+package acr.browser.lightning.utils;
import android.content.Context;
import android.content.res.AssetManager;
@@ -13,11 +13,14 @@ import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
+import acr.browser.lightning.constant.Constants;
+import acr.browser.lightning.preference.PreferenceManager;
+
public class AdBlock {
private static final String TAG = "AdBlock";
private static final String BLOCKED_DOMAINS_LIST_FILE_NAME = "hosts.txt";
- private static final Set mBlockedDomainsList = new HashSet();
+ private static final Set mBlockedDomainsList = new HashSet<>();
private boolean mBlockAds;
private static final Locale mLocale = Locale.getDefault();
private static AdBlock mInstance;
diff --git a/src/acr/browser/lightning/IntentUtils.java b/app/src/main/java/acr/browser/lightning/utils/IntentUtils.java
similarity index 95%
rename from src/acr/browser/lightning/IntentUtils.java
rename to app/src/main/java/acr/browser/lightning/utils/IntentUtils.java
index e43f275..324314d 100644
--- a/src/acr/browser/lightning/IntentUtils.java
+++ b/app/src/main/java/acr/browser/lightning/utils/IntentUtils.java
@@ -1,4 +1,4 @@
-package acr.browser.lightning;
+package acr.browser.lightning.utils;
import android.app.Activity;
import android.content.ActivityNotFoundException;
@@ -15,9 +15,11 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import acr.browser.lightning.controller.BrowserController;
+
public class IntentUtils {
- private Activity mActivity;
+ private final Activity mActivity;
static final Pattern ACCEPTED_URI_SCHEMA = Pattern.compile("(?i)"
+ // switch on case insensitive matching
diff --git a/src/acr/browser/lightning/Utils.java b/app/src/main/java/acr/browser/lightning/utils/Utils.java
similarity index 94%
rename from src/acr/browser/lightning/Utils.java
rename to app/src/main/java/acr/browser/lightning/utils/Utils.java
index a3caa7c..fcc8af8 100644
--- a/src/acr/browser/lightning/Utils.java
+++ b/app/src/main/java/acr/browser/lightning/utils/Utils.java
@@ -1,7 +1,7 @@
/*
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
+package acr.browser.lightning.utils;
import android.annotation.SuppressLint;
import android.app.Activity;
@@ -28,6 +28,11 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import acr.browser.lightning.constant.Constants;
+import acr.browser.lightning.database.HistoryItem;
+import acr.browser.lightning.R;
+import acr.browser.lightning.download.DownloadHandler;
+
public final class Utils {
private Utils() {
@@ -110,7 +115,7 @@ public final class Utils {
}
public static List getOldBookmarks(Context context) {
- List bookmarks = new ArrayList();
+ List bookmarks = new ArrayList<>();
File bookUrl = new File(context.getFilesDir(), "bookurl");
File book = new File(context.getFilesDir(), "bookmarks");
try {
@@ -123,8 +128,8 @@ public final class Utils {
}
readBook.close();
readUrl.close();
- } catch (FileNotFoundException ignored) {
- } catch (IOException ignored) {
+ } catch (IOException e) {
+ e.printStackTrace();
}
return bookmarks;
}
@@ -187,11 +192,10 @@ public final class Utils {
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
- File imageFile = File.createTempFile(imageFileName, /* prefix */
+ return File.createTempFile(imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
- return imageFile;
}
public static Bitmap getWebpageBitmap(Resources resources, boolean dark) {
diff --git a/src/acr/browser/lightning/AnimatedProgressBar.java b/app/src/main/java/acr/browser/lightning/view/AnimatedProgressBar.java
similarity index 99%
rename from src/acr/browser/lightning/AnimatedProgressBar.java
rename to app/src/main/java/acr/browser/lightning/view/AnimatedProgressBar.java
index 09a7cfc..5c28908 100644
--- a/src/acr/browser/lightning/AnimatedProgressBar.java
+++ b/app/src/main/java/acr/browser/lightning/view/AnimatedProgressBar.java
@@ -1,4 +1,4 @@
-package acr.browser.lightning;
+package acr.browser.lightning.view;
import android.animation.ObjectAnimator;
import android.content.Context;
@@ -15,6 +15,8 @@ import android.view.animation.DecelerateInterpolator;
import android.view.animation.Transformation;
import android.widget.LinearLayout;
+import acr.browser.lightning.R;
+
/**
* Copyright 11/4/2014 Anthony Restaino
*
diff --git a/src/acr/browser/lightning/LightningView.java b/app/src/main/java/acr/browser/lightning/view/LightningView.java
similarity index 96%
rename from src/acr/browser/lightning/LightningView.java
rename to app/src/main/java/acr/browser/lightning/view/LightningView.java
index 73ad01a..f50b87d 100644
--- a/src/acr/browser/lightning/LightningView.java
+++ b/app/src/main/java/acr/browser/lightning/view/LightningView.java
@@ -2,15 +2,7 @@
* Copyright 2014 A.C.R. Development
*/
-package acr.browser.lightning;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.net.URISyntaxException;
+package acr.browser.lightning.view;
import android.annotation.SuppressLint;
import android.app.Activity;
@@ -28,6 +20,7 @@ import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import android.os.Message;
+import android.support.annotation.NonNull;
import android.text.InputType;
import android.text.method.PasswordTransformationMethod;
import android.util.Log;
@@ -52,19 +45,36 @@ import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.LinearLayout;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import acr.browser.lightning.R;
+import acr.browser.lightning.constant.Constants;
+import acr.browser.lightning.constant.StartPage;
+import acr.browser.lightning.controller.BrowserController;
+import acr.browser.lightning.download.LightningDownloadListener;
+import acr.browser.lightning.preference.PreferenceManager;
+import acr.browser.lightning.utils.AdBlock;
+import acr.browser.lightning.utils.IntentUtils;
+import acr.browser.lightning.utils.Utils;
+
public class LightningView {
- private Title mTitle;
+ private final Title mTitle;
private WebView mWebView;
private BrowserController mBrowserController;
private GestureDetector mGestureDetector;
- private Activity mActivity;
+ private final Activity mActivity;
private WebSettings mSettings;
private static String mHomepage;
private static String mDefaultUserAgent;
private static Bitmap mWebpageBitmap;
private static PreferenceManager mPreferences;
- private AdBlock mAdBlock;
+ private final AdBlock mAdBlock;
private IntentUtils mIntentUtils;
private final Paint mPaint = new Paint();
private boolean isForegroundTab;
@@ -142,7 +152,7 @@ public class LightningView {
public String getHomepage() {
StringBuilder homepageBuilder = new StringBuilder();
- homepageBuilder.append(HomepageVariables.HEAD);
+ homepageBuilder.append(StartPage.HEAD);
String icon;
String searchUrl;
switch (mPreferences.getSearchChoice()) {
@@ -185,6 +195,7 @@ public class LightningView {
icon = "file:///android_asset/startpage.png";
// "https://startpage.com/graphics/startp_logo.gif";
searchUrl = Constants.STARTPAGE_MOBILE_SEARCH;
+ break;
case 7:
// DUCK_SEARCH;
icon = "file:///android_asset/duckduckgo.png";
@@ -218,9 +229,9 @@ public class LightningView {
}
homepageBuilder.append(icon);
- homepageBuilder.append(HomepageVariables.MIDDLE);
+ homepageBuilder.append(StartPage.MIDDLE);
homepageBuilder.append(searchUrl);
- homepageBuilder.append(HomepageVariables.END);
+ homepageBuilder.append(StartPage.END);
File homepage = new File(mActivity.getFilesDir(), "homepage.html");
try {
@@ -529,8 +540,6 @@ public class LightningView {
icon.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
@@ -627,7 +636,7 @@ public class LightningView {
public class LightningWebClient extends WebViewClient {
- Context mActivity;
+ final Context mActivity;
LightningWebClient(Context context) {
mActivity = context;
@@ -680,7 +689,7 @@ public class LightningView {
}
@Override
- public void onReceivedHttpAuthRequest(final WebView view, final HttpAuthHandler handler,
+ public void onReceivedHttpAuthRequest(final WebView view, @NonNull final HttpAuthHandler handler,
final String host, final String realm) {
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
@@ -750,7 +759,7 @@ public class LightningView {
}
@Override
- public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
+ public void onReceivedSslError(WebView view, @NonNull final SslErrorHandler handler, SslError error) {
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
builder.setTitle(mActivity.getString(R.string.title_warning));
builder.setMessage(mActivity.getString(R.string.message_untrusted_certificate))
@@ -779,7 +788,7 @@ public class LightningView {
}
@Override
- public void onFormResubmission(WebView view, final Message dontResend, final Message resend) {
+ public void onFormResubmission(WebView view, @NonNull final Message dontResend, final Message resend) {
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
builder.setTitle(mActivity.getString(R.string.title_form_resubmission));
builder.setMessage(mActivity.getString(R.string.message_form_resubmission))
@@ -820,7 +829,7 @@ public class LightningView {
view.reload();
return true;
} else if (url.startsWith("intent://")) {
- Intent intent = null;
+ Intent intent;
try {
intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
} catch (URISyntaxException ex) {
@@ -841,7 +850,7 @@ public class LightningView {
public class LightningChromeClient extends WebChromeClient {
- Context mActivity;
+ final Context mActivity;
LightningChromeClient(Context context) {
mActivity = context;
@@ -878,7 +887,7 @@ public class LightningView {
final boolean remember = true;
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
builder.setTitle(mActivity.getString(R.string.location));
- String org = null;
+ String org;
if (origin.length() > 50) {
org = origin.subSequence(0, 50) + "...";
} else {
@@ -1002,7 +1011,7 @@ public class LightningView {
private Bitmap mFavicon;
private String mTitle;
- private Bitmap mDefaultIcon;
+ private final Bitmap mDefaultIcon;
public Title(Context context, boolean darkTheme) {
mDefaultIcon = Utils.getWebpageBitmap(context.getResources(), darkTheme);
diff --git a/res/anim/slide_down.xml b/app/src/main/res/anim/slide_down.xml
similarity index 100%
rename from res/anim/slide_down.xml
rename to app/src/main/res/anim/slide_down.xml
diff --git a/res/anim/slide_up.xml b/app/src/main/res/anim/slide_up.xml
similarity index 100%
rename from res/anim/slide_up.xml
rename to app/src/main/res/anim/slide_up.xml
diff --git a/res/drawable-hdpi/drawer_left_shadow.9.png b/app/src/main/res/drawable-hdpi/drawer_left_shadow.9.png
similarity index 100%
rename from res/drawable-hdpi/drawer_left_shadow.9.png
rename to app/src/main/res/drawable-hdpi/drawer_left_shadow.9.png
diff --git a/res/drawable-hdpi/drawer_right_shadow.9.png b/app/src/main/res/drawable-hdpi/drawer_right_shadow.9.png
similarity index 100%
rename from res/drawable-hdpi/drawer_right_shadow.9.png
rename to app/src/main/res/drawable-hdpi/drawer_right_shadow.9.png
diff --git a/res/drawable-hdpi/ic_action_back.png b/app/src/main/res/drawable-hdpi/ic_action_back.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_back.png
rename to app/src/main/res/drawable-hdpi/ic_action_back.png
diff --git a/res/drawable-hdpi/ic_action_back_dark.png b/app/src/main/res/drawable-hdpi/ic_action_back_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_back_dark.png
rename to app/src/main/res/drawable-hdpi/ic_action_back_dark.png
diff --git a/res/drawable-hdpi/ic_action_collapse.png b/app/src/main/res/drawable-hdpi/ic_action_collapse.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_collapse.png
rename to app/src/main/res/drawable-hdpi/ic_action_collapse.png
diff --git a/res/drawable-hdpi/ic_action_copy.png b/app/src/main/res/drawable-hdpi/ic_action_copy.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_copy.png
rename to app/src/main/res/drawable-hdpi/ic_action_copy.png
diff --git a/res/drawable-hdpi/ic_action_delete.png b/app/src/main/res/drawable-hdpi/ic_action_delete.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_delete.png
rename to app/src/main/res/drawable-hdpi/ic_action_delete.png
diff --git a/res/drawable-hdpi/ic_action_delete_dark.png b/app/src/main/res/drawable-hdpi/ic_action_delete_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_delete_dark.png
rename to app/src/main/res/drawable-hdpi/ic_action_delete_dark.png
diff --git a/res/drawable-hdpi/ic_action_expand.png b/app/src/main/res/drawable-hdpi/ic_action_expand.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_expand.png
rename to app/src/main/res/drawable-hdpi/ic_action_expand.png
diff --git a/res/drawable-hdpi/ic_action_forward.png b/app/src/main/res/drawable-hdpi/ic_action_forward.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_forward.png
rename to app/src/main/res/drawable-hdpi/ic_action_forward.png
diff --git a/res/drawable-hdpi/ic_action_forward_dark.png b/app/src/main/res/drawable-hdpi/ic_action_forward_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_forward_dark.png
rename to app/src/main/res/drawable-hdpi/ic_action_forward_dark.png
diff --git a/res/drawable-hdpi/ic_action_invert_dark.png b/app/src/main/res/drawable-hdpi/ic_action_invert_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_invert_dark.png
rename to app/src/main/res/drawable-hdpi/ic_action_invert_dark.png
diff --git a/res/drawable-hdpi/ic_action_invert_light.png b/app/src/main/res/drawable-hdpi/ic_action_invert_light.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_invert_light.png
rename to app/src/main/res/drawable-hdpi/ic_action_invert_light.png
diff --git a/res/drawable-hdpi/ic_action_plus.png b/app/src/main/res/drawable-hdpi/ic_action_plus.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_plus.png
rename to app/src/main/res/drawable-hdpi/ic_action_plus.png
diff --git a/res/drawable-hdpi/ic_action_plus_dark.png b/app/src/main/res/drawable-hdpi/ic_action_plus_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_plus_dark.png
rename to app/src/main/res/drawable-hdpi/ic_action_plus_dark.png
diff --git a/res/drawable-hdpi/ic_action_refresh.png b/app/src/main/res/drawable-hdpi/ic_action_refresh.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_refresh.png
rename to app/src/main/res/drawable-hdpi/ic_action_refresh.png
diff --git a/res/drawable-hdpi/ic_action_star.png b/app/src/main/res/drawable-hdpi/ic_action_star.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_star.png
rename to app/src/main/res/drawable-hdpi/ic_action_star.png
diff --git a/res/drawable-hdpi/ic_action_star_dark.png b/app/src/main/res/drawable-hdpi/ic_action_star_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_star_dark.png
rename to app/src/main/res/drawable-hdpi/ic_action_star_dark.png
diff --git a/res/drawable-hdpi/ic_action_tabs_dark.png b/app/src/main/res/drawable-hdpi/ic_action_tabs_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_tabs_dark.png
rename to app/src/main/res/drawable-hdpi/ic_action_tabs_dark.png
diff --git a/res/drawable-hdpi/ic_action_tabs_light.png b/app/src/main/res/drawable-hdpi/ic_action_tabs_light.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_tabs_light.png
rename to app/src/main/res/drawable-hdpi/ic_action_tabs_light.png
diff --git a/res/drawable-hdpi/ic_action_text_size_dark.png b/app/src/main/res/drawable-hdpi/ic_action_text_size_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_text_size_dark.png
rename to app/src/main/res/drawable-hdpi/ic_action_text_size_dark.png
diff --git a/res/drawable-hdpi/ic_action_text_size_light.png b/app/src/main/res/drawable-hdpi/ic_action_text_size_light.png
similarity index 100%
rename from res/drawable-hdpi/ic_action_text_size_light.png
rename to app/src/main/res/drawable-hdpi/ic_action_text_size_light.png
diff --git a/res/drawable-hdpi/ic_bookmark.png b/app/src/main/res/drawable-hdpi/ic_bookmark.png
similarity index 100%
rename from res/drawable-hdpi/ic_bookmark.png
rename to app/src/main/res/drawable-hdpi/ic_bookmark.png
diff --git a/res/drawable-hdpi/ic_bookmark_dark.png b/app/src/main/res/drawable-hdpi/ic_bookmark_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_bookmark_dark.png
rename to app/src/main/res/drawable-hdpi/ic_bookmark_dark.png
diff --git a/res/drawable-hdpi/ic_history.png b/app/src/main/res/drawable-hdpi/ic_history.png
similarity index 100%
rename from res/drawable-hdpi/ic_history.png
rename to app/src/main/res/drawable-hdpi/ic_history.png
diff --git a/res/drawable-hdpi/ic_history_dark.png b/app/src/main/res/drawable-hdpi/ic_history_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_history_dark.png
rename to app/src/main/res/drawable-hdpi/ic_history_dark.png
diff --git a/res/drawable-hdpi/ic_search.png b/app/src/main/res/drawable-hdpi/ic_search.png
similarity index 100%
rename from res/drawable-hdpi/ic_search.png
rename to app/src/main/res/drawable-hdpi/ic_search.png
diff --git a/res/drawable-hdpi/ic_search_dark.png b/app/src/main/res/drawable-hdpi/ic_search_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_search_dark.png
rename to app/src/main/res/drawable-hdpi/ic_search_dark.png
diff --git a/res/drawable-hdpi/ic_webpage.png b/app/src/main/res/drawable-hdpi/ic_webpage.png
similarity index 100%
rename from res/drawable-hdpi/ic_webpage.png
rename to app/src/main/res/drawable-hdpi/ic_webpage.png
diff --git a/res/drawable-hdpi/ic_webpage_dark.png b/app/src/main/res/drawable-hdpi/ic_webpage_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_webpage_dark.png
rename to app/src/main/res/drawable-hdpi/ic_webpage_dark.png
diff --git a/res/drawable-mdpi/drawer_left_shadow.9.png b/app/src/main/res/drawable-mdpi/drawer_left_shadow.9.png
similarity index 100%
rename from res/drawable-mdpi/drawer_left_shadow.9.png
rename to app/src/main/res/drawable-mdpi/drawer_left_shadow.9.png
diff --git a/res/drawable-mdpi/drawer_right_shadow.9.png b/app/src/main/res/drawable-mdpi/drawer_right_shadow.9.png
similarity index 100%
rename from res/drawable-mdpi/drawer_right_shadow.9.png
rename to app/src/main/res/drawable-mdpi/drawer_right_shadow.9.png
diff --git a/res/drawable-xhdpi/drawer_left_shadow.9.png b/app/src/main/res/drawable-xhdpi/drawer_left_shadow.9.png
similarity index 100%
rename from res/drawable-xhdpi/drawer_left_shadow.9.png
rename to app/src/main/res/drawable-xhdpi/drawer_left_shadow.9.png
diff --git a/res/drawable-xhdpi/drawer_right_shadow.9.png b/app/src/main/res/drawable-xhdpi/drawer_right_shadow.9.png
similarity index 100%
rename from res/drawable-xhdpi/drawer_right_shadow.9.png
rename to app/src/main/res/drawable-xhdpi/drawer_right_shadow.9.png
diff --git a/res/drawable-xhdpi/ic_action_back.png b/app/src/main/res/drawable-xhdpi/ic_action_back.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_back.png
rename to app/src/main/res/drawable-xhdpi/ic_action_back.png
diff --git a/res/drawable-xhdpi/ic_action_back_dark.png b/app/src/main/res/drawable-xhdpi/ic_action_back_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_back_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_action_back_dark.png
diff --git a/res/drawable-xhdpi/ic_action_collapse.png b/app/src/main/res/drawable-xhdpi/ic_action_collapse.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_collapse.png
rename to app/src/main/res/drawable-xhdpi/ic_action_collapse.png
diff --git a/res/drawable-xhdpi/ic_action_copy.png b/app/src/main/res/drawable-xhdpi/ic_action_copy.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_copy.png
rename to app/src/main/res/drawable-xhdpi/ic_action_copy.png
diff --git a/res/drawable-xhdpi/ic_action_delete.png b/app/src/main/res/drawable-xhdpi/ic_action_delete.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_delete.png
rename to app/src/main/res/drawable-xhdpi/ic_action_delete.png
diff --git a/res/drawable-xhdpi/ic_action_delete_dark.png b/app/src/main/res/drawable-xhdpi/ic_action_delete_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_delete_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_action_delete_dark.png
diff --git a/res/drawable-xhdpi/ic_action_expand.png b/app/src/main/res/drawable-xhdpi/ic_action_expand.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_expand.png
rename to app/src/main/res/drawable-xhdpi/ic_action_expand.png
diff --git a/res/drawable-xhdpi/ic_action_forward.png b/app/src/main/res/drawable-xhdpi/ic_action_forward.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_forward.png
rename to app/src/main/res/drawable-xhdpi/ic_action_forward.png
diff --git a/res/drawable-xhdpi/ic_action_forward_dark.png b/app/src/main/res/drawable-xhdpi/ic_action_forward_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_forward_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_action_forward_dark.png
diff --git a/res/drawable-xhdpi/ic_action_invert_dark.png b/app/src/main/res/drawable-xhdpi/ic_action_invert_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_invert_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_action_invert_dark.png
diff --git a/res/drawable-xhdpi/ic_action_invert_light.png b/app/src/main/res/drawable-xhdpi/ic_action_invert_light.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_invert_light.png
rename to app/src/main/res/drawable-xhdpi/ic_action_invert_light.png
diff --git a/res/drawable-xhdpi/ic_action_plus.png b/app/src/main/res/drawable-xhdpi/ic_action_plus.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_plus.png
rename to app/src/main/res/drawable-xhdpi/ic_action_plus.png
diff --git a/res/drawable-xhdpi/ic_action_plus_dark.png b/app/src/main/res/drawable-xhdpi/ic_action_plus_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_plus_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_action_plus_dark.png
diff --git a/res/drawable-xhdpi/ic_action_refresh.png b/app/src/main/res/drawable-xhdpi/ic_action_refresh.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_refresh.png
rename to app/src/main/res/drawable-xhdpi/ic_action_refresh.png
diff --git a/res/drawable-xhdpi/ic_action_star.png b/app/src/main/res/drawable-xhdpi/ic_action_star.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_star.png
rename to app/src/main/res/drawable-xhdpi/ic_action_star.png
diff --git a/res/drawable-xhdpi/ic_action_star_dark.png b/app/src/main/res/drawable-xhdpi/ic_action_star_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_star_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_action_star_dark.png
diff --git a/res/drawable-xhdpi/ic_action_tabs_dark.png b/app/src/main/res/drawable-xhdpi/ic_action_tabs_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_tabs_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_action_tabs_dark.png
diff --git a/res/drawable-xhdpi/ic_action_tabs_light.png b/app/src/main/res/drawable-xhdpi/ic_action_tabs_light.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_tabs_light.png
rename to app/src/main/res/drawable-xhdpi/ic_action_tabs_light.png
diff --git a/res/drawable-xhdpi/ic_action_text_size_dark.png b/app/src/main/res/drawable-xhdpi/ic_action_text_size_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_text_size_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_action_text_size_dark.png
diff --git a/res/drawable-xhdpi/ic_action_text_size_light.png b/app/src/main/res/drawable-xhdpi/ic_action_text_size_light.png
similarity index 100%
rename from res/drawable-xhdpi/ic_action_text_size_light.png
rename to app/src/main/res/drawable-xhdpi/ic_action_text_size_light.png
diff --git a/res/drawable-xhdpi/ic_bookmark.png b/app/src/main/res/drawable-xhdpi/ic_bookmark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_bookmark.png
rename to app/src/main/res/drawable-xhdpi/ic_bookmark.png
diff --git a/res/drawable-xhdpi/ic_bookmark_dark.png b/app/src/main/res/drawable-xhdpi/ic_bookmark_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_bookmark_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_bookmark_dark.png
diff --git a/res/drawable-xhdpi/ic_history.png b/app/src/main/res/drawable-xhdpi/ic_history.png
similarity index 100%
rename from res/drawable-xhdpi/ic_history.png
rename to app/src/main/res/drawable-xhdpi/ic_history.png
diff --git a/res/drawable-xhdpi/ic_history_dark.png b/app/src/main/res/drawable-xhdpi/ic_history_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_history_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_history_dark.png
diff --git a/res/drawable-xhdpi/ic_search.png b/app/src/main/res/drawable-xhdpi/ic_search.png
similarity index 100%
rename from res/drawable-xhdpi/ic_search.png
rename to app/src/main/res/drawable-xhdpi/ic_search.png
diff --git a/res/drawable-xhdpi/ic_search_dark.png b/app/src/main/res/drawable-xhdpi/ic_search_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_search_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_search_dark.png
diff --git a/res/drawable-xhdpi/ic_webpage.png b/app/src/main/res/drawable-xhdpi/ic_webpage.png
similarity index 100%
rename from res/drawable-xhdpi/ic_webpage.png
rename to app/src/main/res/drawable-xhdpi/ic_webpage.png
diff --git a/res/drawable-xhdpi/ic_webpage_dark.png b/app/src/main/res/drawable-xhdpi/ic_webpage_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_webpage_dark.png
rename to app/src/main/res/drawable-xhdpi/ic_webpage_dark.png
diff --git a/res/drawable-xxhdpi/ic_action_back.png b/app/src/main/res/drawable-xxhdpi/ic_action_back.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_back.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_back.png
diff --git a/res/drawable-xxhdpi/ic_action_back_dark.png b/app/src/main/res/drawable-xxhdpi/ic_action_back_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_back_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_back_dark.png
diff --git a/res/drawable-xxhdpi/ic_action_collapse.png b/app/src/main/res/drawable-xxhdpi/ic_action_collapse.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_collapse.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_collapse.png
diff --git a/res/drawable-xxhdpi/ic_action_copy.png b/app/src/main/res/drawable-xxhdpi/ic_action_copy.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_copy.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_copy.png
diff --git a/res/drawable-xxhdpi/ic_action_delete.png b/app/src/main/res/drawable-xxhdpi/ic_action_delete.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_delete.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_delete.png
diff --git a/res/drawable-xxhdpi/ic_action_delete_dark.png b/app/src/main/res/drawable-xxhdpi/ic_action_delete_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_delete_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_delete_dark.png
diff --git a/res/drawable-xxhdpi/ic_action_expand.png b/app/src/main/res/drawable-xxhdpi/ic_action_expand.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_expand.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_expand.png
diff --git a/res/drawable-xxhdpi/ic_action_forward.png b/app/src/main/res/drawable-xxhdpi/ic_action_forward.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_forward.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_forward.png
diff --git a/res/drawable-xxhdpi/ic_action_forward_dark.png b/app/src/main/res/drawable-xxhdpi/ic_action_forward_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_forward_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_forward_dark.png
diff --git a/res/drawable-xxhdpi/ic_action_invert_dark.png b/app/src/main/res/drawable-xxhdpi/ic_action_invert_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_invert_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_invert_dark.png
diff --git a/res/drawable-xxhdpi/ic_action_invert_light.png b/app/src/main/res/drawable-xxhdpi/ic_action_invert_light.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_invert_light.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_invert_light.png
diff --git a/res/drawable-xxhdpi/ic_action_plus.png b/app/src/main/res/drawable-xxhdpi/ic_action_plus.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_plus.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_plus.png
diff --git a/res/drawable-xxhdpi/ic_action_plus_dark.png b/app/src/main/res/drawable-xxhdpi/ic_action_plus_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_plus_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_plus_dark.png
diff --git a/res/drawable-xxhdpi/ic_action_refresh.png b/app/src/main/res/drawable-xxhdpi/ic_action_refresh.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_refresh.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_refresh.png
diff --git a/res/drawable-xxhdpi/ic_action_star.png b/app/src/main/res/drawable-xxhdpi/ic_action_star.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_star.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_star.png
diff --git a/res/drawable-xxhdpi/ic_action_star_dark.png b/app/src/main/res/drawable-xxhdpi/ic_action_star_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_star_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_star_dark.png
diff --git a/res/drawable-xxhdpi/ic_action_tabs_dark.png b/app/src/main/res/drawable-xxhdpi/ic_action_tabs_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_tabs_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_tabs_dark.png
diff --git a/res/drawable-xxhdpi/ic_action_tabs_light.png b/app/src/main/res/drawable-xxhdpi/ic_action_tabs_light.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_tabs_light.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_tabs_light.png
diff --git a/res/drawable-xxhdpi/ic_action_text_size_dark.png b/app/src/main/res/drawable-xxhdpi/ic_action_text_size_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_text_size_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_text_size_dark.png
diff --git a/res/drawable-xxhdpi/ic_action_text_size_light.png b/app/src/main/res/drawable-xxhdpi/ic_action_text_size_light.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_action_text_size_light.png
rename to app/src/main/res/drawable-xxhdpi/ic_action_text_size_light.png
diff --git a/res/drawable-xxhdpi/ic_bookmark.png b/app/src/main/res/drawable-xxhdpi/ic_bookmark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_bookmark.png
rename to app/src/main/res/drawable-xxhdpi/ic_bookmark.png
diff --git a/res/drawable-xxhdpi/ic_bookmark_dark.png b/app/src/main/res/drawable-xxhdpi/ic_bookmark_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_bookmark_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_bookmark_dark.png
diff --git a/res/drawable-xxhdpi/ic_history.png b/app/src/main/res/drawable-xxhdpi/ic_history.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_history.png
rename to app/src/main/res/drawable-xxhdpi/ic_history.png
diff --git a/res/drawable-xxhdpi/ic_history_dark.png b/app/src/main/res/drawable-xxhdpi/ic_history_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_history_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_history_dark.png
diff --git a/res/drawable-xxhdpi/ic_search.png b/app/src/main/res/drawable-xxhdpi/ic_search.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_search.png
rename to app/src/main/res/drawable-xxhdpi/ic_search.png
diff --git a/res/drawable-xxhdpi/ic_search_dark.png b/app/src/main/res/drawable-xxhdpi/ic_search_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_search_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_search_dark.png
diff --git a/res/drawable-xxhdpi/ic_webpage.png b/app/src/main/res/drawable-xxhdpi/ic_webpage.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_webpage.png
rename to app/src/main/res/drawable-xxhdpi/ic_webpage.png
diff --git a/res/drawable-xxhdpi/ic_webpage_dark.png b/app/src/main/res/drawable-xxhdpi/ic_webpage_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_webpage_dark.png
rename to app/src/main/res/drawable-xxhdpi/ic_webpage_dark.png
diff --git a/res/drawable/card_bg.xml b/app/src/main/res/drawable/card_bg.xml
similarity index 100%
rename from res/drawable/card_bg.xml
rename to app/src/main/res/drawable/card_bg.xml
diff --git a/res/drawable/card_bg_elevate.xml b/app/src/main/res/drawable/card_bg_elevate.xml
similarity index 100%
rename from res/drawable/card_bg_elevate.xml
rename to app/src/main/res/drawable/card_bg_elevate.xml
diff --git a/res/drawable/list_bg.xml b/app/src/main/res/drawable/list_bg.xml
similarity index 100%
rename from res/drawable/list_bg.xml
rename to app/src/main/res/drawable/list_bg.xml
diff --git a/res/drawable/list_bg_dark.xml b/app/src/main/res/drawable/list_bg_dark.xml
similarity index 100%
rename from res/drawable/list_bg_dark.xml
rename to app/src/main/res/drawable/list_bg_dark.xml
diff --git a/res/drawable/list_bg_light.xml b/app/src/main/res/drawable/list_bg_light.xml
similarity index 100%
rename from res/drawable/list_bg_light.xml
rename to app/src/main/res/drawable/list_bg_light.xml
diff --git a/res/drawable/toolbar_elevate.xml b/app/src/main/res/drawable/toolbar_elevate.xml
similarity index 100%
rename from res/drawable/toolbar_elevate.xml
rename to app/src/main/res/drawable/toolbar_elevate.xml
diff --git a/res/drawable/toolbar_elevate_dark.xml b/app/src/main/res/drawable/toolbar_elevate_dark.xml
similarity index 100%
rename from res/drawable/toolbar_elevate_dark.xml
rename to app/src/main/res/drawable/toolbar_elevate_dark.xml
diff --git a/res/layout/about_settings.xml b/app/src/main/res/layout/about_settings.xml
similarity index 100%
rename from res/layout/about_settings.xml
rename to app/src/main/res/layout/about_settings.xml
diff --git a/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
similarity index 82%
rename from res/layout/activity_main.xml
rename to app/src/main/res/layout/activity_main.xml
index 336ead4..db9476a 100644
--- a/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,23 +1,22 @@
+ android:orientation="vertical">
+ android:fitsSystemWindows="true">
+ android:orientation="vertical">
diff --git a/res/layout/advanced_settings.xml b/app/src/main/res/layout/advanced_settings.xml
similarity index 100%
rename from res/layout/advanced_settings.xml
rename to app/src/main/res/layout/advanced_settings.xml
diff --git a/res/layout/animated_progress_bar.xml b/app/src/main/res/layout/animated_progress_bar.xml
similarity index 100%
rename from res/layout/animated_progress_bar.xml
rename to app/src/main/res/layout/animated_progress_bar.xml
diff --git a/res/layout/bookmark_drawer.xml b/app/src/main/res/layout/bookmark_drawer.xml
similarity index 100%
rename from res/layout/bookmark_drawer.xml
rename to app/src/main/res/layout/bookmark_drawer.xml
diff --git a/res/layout/bookmark_list_item.xml b/app/src/main/res/layout/bookmark_list_item.xml
similarity index 100%
rename from res/layout/bookmark_list_item.xml
rename to app/src/main/res/layout/bookmark_list_item.xml
diff --git a/res/layout/bookmark_settings.xml b/app/src/main/res/layout/bookmark_settings.xml
similarity index 100%
rename from res/layout/bookmark_settings.xml
rename to app/src/main/res/layout/bookmark_settings.xml
diff --git a/res/layout/browser_content.xml b/app/src/main/res/layout/browser_content.xml
similarity index 100%
rename from res/layout/browser_content.xml
rename to app/src/main/res/layout/browser_content.xml
diff --git a/res/layout/display_settings.xml b/app/src/main/res/layout/display_settings.xml
similarity index 100%
rename from res/layout/display_settings.xml
rename to app/src/main/res/layout/display_settings.xml
diff --git a/res/layout/general_settings.xml b/app/src/main/res/layout/general_settings.xml
similarity index 100%
rename from res/layout/general_settings.xml
rename to app/src/main/res/layout/general_settings.xml
diff --git a/res/layout/license_activity.xml b/app/src/main/res/layout/license_activity.xml
similarity index 100%
rename from res/layout/license_activity.xml
rename to app/src/main/res/layout/license_activity.xml
diff --git a/res/layout/privacy_settings.xml b/app/src/main/res/layout/privacy_settings.xml
similarity index 100%
rename from res/layout/privacy_settings.xml
rename to app/src/main/res/layout/privacy_settings.xml
diff --git a/res/layout/reading_view.xml b/app/src/main/res/layout/reading_view.xml
similarity index 100%
rename from res/layout/reading_view.xml
rename to app/src/main/res/layout/reading_view.xml
diff --git a/res/layout/search.xml b/app/src/main/res/layout/search.xml
similarity index 100%
rename from res/layout/search.xml
rename to app/src/main/res/layout/search.xml
diff --git a/res/layout/search_interface.xml b/app/src/main/res/layout/search_interface.xml
similarity index 100%
rename from res/layout/search_interface.xml
rename to app/src/main/res/layout/search_interface.xml
diff --git a/res/layout/seek_layout.xml b/app/src/main/res/layout/seek_layout.xml
similarity index 100%
rename from res/layout/seek_layout.xml
rename to app/src/main/res/layout/seek_layout.xml
diff --git a/res/layout/settings.xml b/app/src/main/res/layout/settings.xml
similarity index 100%
rename from res/layout/settings.xml
rename to app/src/main/res/layout/settings.xml
diff --git a/res/layout/tab_drawer.xml b/app/src/main/res/layout/tab_drawer.xml
similarity index 98%
rename from res/layout/tab_drawer.xml
rename to app/src/main/res/layout/tab_drawer.xml
index 63a469c..648a8c6 100644
--- a/res/layout/tab_drawer.xml
+++ b/app/src/main/res/layout/tab_drawer.xml
@@ -4,7 +4,7 @@
android:layout_width="@dimen/navigation_width"
android:layout_height="match_parent"
android:layout_gravity="start"
- android:background="?drawerBackground"
+ android:background="?attr/drawerBackground"
android:clickable="true"
android:fitsSystemWindows="true"
android:orientation="vertical" >
diff --git a/res/layout/tab_list_item.xml b/app/src/main/res/layout/tab_list_item.xml
similarity index 100%
rename from res/layout/tab_list_item.xml
rename to app/src/main/res/layout/tab_list_item.xml
diff --git a/res/layout/toolbar.xml b/app/src/main/res/layout/toolbar.xml
similarity index 94%
rename from res/layout/toolbar.xml
rename to app/src/main/res/layout/toolbar.xml
index ed55fae..d54e396 100644
--- a/res/layout/toolbar.xml
+++ b/app/src/main/res/layout/toolbar.xml
@@ -20,7 +20,7 @@
android:layout_height="wrap_content"
android:background="?attr/progressBackgroundColor" >
-
+
\ No newline at end of file
diff --git a/res/menu-large/main.xml b/app/src/main/res/menu-large/main.xml
similarity index 100%
rename from res/menu-large/main.xml
rename to app/src/main/res/menu-large/main.xml
diff --git a/res/menu-xlarge/incognito.xml b/app/src/main/res/menu-xlarge/incognito.xml
similarity index 91%
rename from res/menu-xlarge/incognito.xml
rename to app/src/main/res/menu-xlarge/incognito.xml
index 21af914..80bd08e 100644
--- a/res/menu-xlarge/incognito.xml
+++ b/app/src/main/res/menu-xlarge/incognito.xml
@@ -33,5 +33,8 @@
+
\ No newline at end of file
diff --git a/res/menu-xlarge/main.xml b/app/src/main/res/menu-xlarge/main.xml
similarity index 100%
rename from res/menu-xlarge/main.xml
rename to app/src/main/res/menu-xlarge/main.xml
diff --git a/res/menu/incognito.xml b/app/src/main/res/menu/incognito.xml
similarity index 100%
rename from res/menu/incognito.xml
rename to app/src/main/res/menu/incognito.xml
diff --git a/res/menu/main.xml b/app/src/main/res/menu/main.xml
similarity index 100%
rename from res/menu/main.xml
rename to app/src/main/res/menu/main.xml
diff --git a/res/menu/reading.xml b/app/src/main/res/menu/reading.xml
similarity index 100%
rename from res/menu/reading.xml
rename to app/src/main/res/menu/reading.xml
diff --git a/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from res/mipmap-hdpi/ic_launcher.png
rename to app/src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from res/mipmap-mdpi/ic_launcher.png
rename to app/src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from res/mipmap-xhdpi/ic_launcher.png
rename to app/src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from res/mipmap-xxhdpi/ic_launcher.png
rename to app/src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from res/mipmap-xxxhdpi/ic_launcher.png
rename to app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
similarity index 99%
rename from res/values-ar/strings.xml
rename to app/src/main/res/values-ar/strings.xml
index e0d980a..0c32338 100644
--- a/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -1,4 +1,4 @@
-
+
Lightning
جوجل
diff --git a/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
similarity index 99%
rename from res/values-de/strings.xml
rename to app/src/main/res/values-de/strings.xml
index 1bb3c93..50f6d2c 100644
--- a/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -1,4 +1,4 @@
-
+
- @color/primary_color
- - @drawable/list_bg
+ - ?attr/listChoiceBackgroundIndicator
- @color/primary_color
- @color/secondary_color_settings
- @color/accent_color
- - true
+ - true
- false
- @null
- @drawable/ic_action_invert_light
@@ -21,11 +21,11 @@
- @color/primary_color_dark
- - @drawable/list_bg
+ - ?attr/listChoiceBackgroundIndicator
- @color/primary_color_dark
- @color/secondary_color_settings_dark
- @color/accent_color
- - true
+ - true
- false
- @null
- @drawable/ic_action_invert_dark
@@ -39,9 +39,9 @@
- @drawable/card_bg
- ?attr/listChoiceBackgroundIndicator
- @color/primary_color
- - @color/secondary_color
+ - @color/transparent
- @color/accent_color
- - true
+ - true
- false
- #00000000
- @null
@@ -59,6 +59,15 @@
- @color/divider_light
- @drawable/ic_action_tabs_light
- @drawable/list_bg_light
+ - true
+ - @color/secondary_color
+ - false
+
\ No newline at end of file
diff --git a/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
similarity index 100%
rename from res/values-zh-rCN/strings.xml
rename to app/src/main/res/values-zh-rCN/strings.xml
diff --git a/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
similarity index 100%
rename from res/values-zh-rTW/strings.xml
rename to app/src/main/res/values-zh-rTW/strings.xml
diff --git a/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
similarity index 100%
rename from res/values/arrays.xml
rename to app/src/main/res/values/arrays.xml
diff --git a/res/values/attr.xml b/app/src/main/res/values/attr.xml
similarity index 100%
rename from res/values/attr.xml
rename to app/src/main/res/values/attr.xml
diff --git a/res/values/colors.xml b/app/src/main/res/values/colors.xml
similarity index 94%
rename from res/values/colors.xml
rename to app/src/main/res/values/colors.xml
index 5358ddc..3fca9ae 100644
--- a/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -14,22 +14,24 @@
#E0E0E0
#4D000000
#0073EF
-
+
#ffffff
#424242
-
+
#9C9C9C
#2E2E2E
-
+
#BDBDBD
-
+
#424242
-
+
#1EFFFFFF
#1E000000
-
-
+
+
#0FFFFFFF
#0F000000
-
+
+ #00000000
+
\ No newline at end of file
diff --git a/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
similarity index 100%
rename from res/values/dimens.xml
rename to app/src/main/res/values/dimens.xml
diff --git a/res/values/strings.xml b/app/src/main/res/values/strings.xml
similarity index 99%
rename from res/values/strings.xml
rename to app/src/main/res/values/strings.xml
index bb367d8..b3d9cf9 100644
--- a/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -15,7 +15,7 @@
limitations under the License.
-->
-
+
Lightning
Open navigation drawer
diff --git a/res/values/styles.xml b/app/src/main/res/values/styles.xml
similarity index 95%
rename from res/values/styles.xml
rename to app/src/main/res/values/styles.xml
index 2be4b6b..2273120 100644
--- a/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -9,7 +9,7 @@
- @color/primary_color
- @color/secondary_color_settings
- @color/accent_color
- - true
+ - true
- false
- @null
- @drawable/ic_action_invert_light
@@ -25,7 +25,7 @@
- @color/primary_color_dark
- @color/secondary_color_settings_dark
- @color/accent_color
- - true
+ - true
- false
- @null
- @drawable/ic_action_invert_dark
@@ -40,7 +40,7 @@
- @color/primary_color
- @color/secondary_color
- @color/accent_color
- - true
+ - true
- false
- @color/secondary_color
- @drawable/list_bg
@@ -68,7 +68,7 @@
- @color/primary_color_dark
- @color/secondary_color
- @color/accent_color
- - true
+ - true
- false
- @color/secondary_color
- @drawable/list_bg
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..88d246d
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,15 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:1.2.3'
+ }
+}
+
+allprojects {
+ repositories {
+ jcenter()
+ }
+}
diff --git a/external/netcipher b/external/netcipher
index a7092a4..8441429 160000
--- a/external/netcipher
+++ b/external/netcipher
@@ -1 +1 @@
-Subproject commit a7092a4bcba198a5d5c7fe1b07d27039aebd2144
+Subproject commit 84414299123c73c42b861bb51eb7ed959e8acf42
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..8c0fb64
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..0c71e76
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Apr 10 15:27:10 PDT 2013
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
diff --git a/gradlew b/gradlew
new file mode 100644
index 0000000..91a7e26
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..8a0b282
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/lint.xml b/lint.xml
deleted file mode 100644
index cd410d4..0000000
--- a/lint.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/project.properties b/project.properties
deleted file mode 100644
index 1fbb689..0000000
--- a/project.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-
-# Project target.
-target=android-22
-android.library.reference.1=external/appcompat
-android.library.reference.2=external/palette
-android.library.reference.3=external/netcipher/libnetcipher
diff --git a/res/drawable-hdpi/ic_action_menu.png b/res/drawable-hdpi/ic_action_menu.png
deleted file mode 100644
index 36ff448..0000000
Binary files a/res/drawable-hdpi/ic_action_menu.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_drawer.png b/res/drawable-hdpi/ic_drawer.png
deleted file mode 100644
index ff7b1de..0000000
Binary files a/res/drawable-hdpi/ic_drawer.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_action_menu.png b/res/drawable-xhdpi/ic_action_menu.png
deleted file mode 100644
index c3c626f..0000000
Binary files a/res/drawable-xhdpi/ic_action_menu.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_drawer.png b/res/drawable-xhdpi/ic_drawer.png
deleted file mode 100644
index b9bc3d7..0000000
Binary files a/res/drawable-xhdpi/ic_drawer.png and /dev/null differ
diff --git a/res/drawable-xhdpi/progress_bar.9.png b/res/drawable-xhdpi/progress_bar.9.png
deleted file mode 100644
index 3ee17a7..0000000
Binary files a/res/drawable-xhdpi/progress_bar.9.png and /dev/null differ
diff --git a/res/drawable-xhdpi/progress_bar_bg.9.png b/res/drawable-xhdpi/progress_bar_bg.9.png
deleted file mode 100644
index daca8b7..0000000
Binary files a/res/drawable-xhdpi/progress_bar_bg.9.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/ic_action_menu.png b/res/drawable-xxhdpi/ic_action_menu.png
deleted file mode 100644
index 18843e6..0000000
Binary files a/res/drawable-xxhdpi/ic_action_menu.png and /dev/null differ
diff --git a/res/drawable/progress.xml b/res/drawable/progress.xml
deleted file mode 100644
index a59c866..0000000
--- a/res/drawable/progress.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..09a8a5d
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,4 @@
+include ':app'
+include ':libnetcipher'
+
+project(':libnetcipher').projectDir = new File(rootProject.projectDir, 'external/netcipher/libnetcipher')
diff --git a/setup-ant.bat b/setup-ant.bat
deleted file mode 100644
index 2c443b4..0000000
--- a/setup-ant.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-@ECHO OFF
-SETLOCAL enabledelayedexpansion
-
-SET "target=android-21"
-
-RMDIR external\appcompat /s /q
-XCOPY "%ANDROID_HOME%\extras\android\support\v7\appcompat" "external\appcompat\*" /s /e /y /q
-
-REM This library is already included by netcipher, but SHA1 of JARs differ
-DEL /f /q external\appcompat\libs\android-support-v4.jar
-
-RMDIR external\palette /s /q
-XCOPY "%ANDROID_HOME%\extras\android\support\v7\palette" "external\palette\*" /s /e /y /q
-MKDIR external\palette\src
-
-REM Update ant setup in project and all sub-projects
-SET "pattern=project.properties"
-FOR /R "./external/" %%# in (*.properties) DO (
- ECHO %%~nx# | FIND "%pattern%" 1>NUL && (
- SET current_dir=%~d0%%~p#
- SET current_dir=!current_dir:\=/!
- ECHO Updating ant setup in "!current_dir!"
- CALL android update lib-project -t %target% -p "!current_dir!"
- )
-)
-CALL android update project -p . --subprojects -t %target% --name Lightning
diff --git a/setup-ant.sh b/setup-ant.sh
deleted file mode 100755
index e385400..0000000
--- a/setup-ant.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-target="android-21"
-
-rm -rf external/appcompat
-cp -r "${ANDROID_HOME}/extras/android/support/v7/appcompat" external/
-
-# This library is already included by netcipher, but SHA1 of JARs differ
-rm external/appcompat/libs/android-support-v4.jar
-
-rm -rf external/palette
-cp -r "${ANDROID_HOME}/extras/android/support/v7/palette" external/
-mkdir external/palette/src
-
-# Update ant setup in project and all sub-projects
-for f in `find external/ -name project.properties`; do
- projectdir=`dirname $f`
- echo "Updating ant setup in $projectdir:"
- android update lib-project -p $projectdir -t $target
-done
-android update project -p . --subprojects -t $target --name Lightning
diff --git a/src/acr/browser/lightning/BrowserController.java b/src/acr/browser/lightning/BrowserController.java
deleted file mode 100644
index e320757..0000000
--- a/src/acr/browser/lightning/BrowserController.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2014 A.C.R. Development
- */
-package acr.browser.lightning;
-
-import android.app.Activity;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.Message;
-import android.view.View;
-import android.webkit.ValueCallback;
-import android.webkit.WebChromeClient.CustomViewCallback;
-import android.webkit.WebView;
-
-public interface BrowserController {
-
- public void updateUrl(String title, boolean shortUrl);
-
- public void updateProgress(int n);
-
- public void updateHistory(String title, String url);
-
- public void openFileChooser(ValueCallback uploadMsg);
-
- public void update();
-
- public void onLongPress();
-
- public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback);
-
- public void onHideCustomView();
-
- public Bitmap getDefaultVideoPoster();
-
- public View getVideoLoadingProgressView();
-
- public void onCreateWindow(boolean isUserGesture, Message resultMsg);
-
- public Activity getActivity();
-
- public void hideActionBar();
-
- public void showActionBar();
-
- public void toggleActionBar();
-
- public void longClickPage(String url);
-
- public void openBookmarkPage(WebView view);
-
- public void showFileChooser(ValueCallback filePathCallback);
-
- public void closeEmptyTab();
-
- public boolean isIncognito();
-
- public int getMenu();
-}
diff --git a/src/acr/browser/lightning/ReplacingInputStream.java b/src/acr/browser/lightning/ReplacingInputStream.java
deleted file mode 100644
index 9cd201d..0000000
--- a/src/acr/browser/lightning/ReplacingInputStream.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package acr.browser.lightning;
-
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Deque;
-import java.util.Iterator;
-import java.util.LinkedList;
-
-public class ReplacingInputStream extends FilterInputStream {
-
- Deque inQueue = new LinkedList();
-
- Deque outQueue = new LinkedList();
-
- final byte[] search, replacement;
-
- protected ReplacingInputStream(InputStream in, byte[] search, byte[] replacement) {
- super(in);
- this.search = search;
- this.replacement = replacement;
- }
-
- private boolean isMatchFound() {
- Iterator inIter = inQueue.iterator();
- for (int i = 0; i < search.length; i++) {
- if (!inIter.hasNext() || search[i] != inIter.next()) {
- return false;
- }
- }
- return true;
- }
-
- private void readAhead() throws IOException {
- // Work up some look-ahead.
- while (inQueue.size() < search.length) {
- int next = super.read();
- inQueue.offer(next);
- if (next == -1) {
- break;
- }
- }
- }
-
- @Override
- public int read() throws IOException {
-
- // Next byte already determined.
- if (outQueue.isEmpty()) {
-
- readAhead();
-
- if (isMatchFound()) {
- for (int i = 0; i < search.length; i++) {
- inQueue.remove();
- }
-
- for (byte b : replacement) {
- outQueue.offer((int) b);
- }
- } else {
- outQueue.add(inQueue.remove());
- }
- }
-
- return outQueue.remove();
- }
-
- /**
- * Returns false. REFilterInputStream does not support mark() and reset()
- * methods.
- */
- @Override
- public boolean markSupported() {
- return false;
- }
-
- /**
- * Reads from the stream into the provided array.
- */
- @Override
- public int read(byte[] b, int off, int len) throws IOException {
- int i;
- int ok = 0;
- while (len-- > 0) {
- i = read();
- if (i == -1) {
- return (ok == 0) ? -1 : ok;
- }
- b[off++] = (byte) i;
- ok++;
- }
- return ok;
- }
-
- @Override
- public int read(byte[] buffer) throws IOException {
-
- return read(buffer, 0, buffer.length);
- }
-}