aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBenjamin Barenblat <bbaren@google.com>2019-05-09 16:34:32 -0400
committerBenjamin Barenblat <bbaren@google.com>2019-05-09 16:34:32 -0400
commit1277f853696c26dba7960462ee49c5d9d39eab47 (patch)
treea6729619754afc4839298c175727ff31984f2dc4
parentdcf999ad1f5c048adaf504ac2515bb814adb4b09 (diff)
Add option to go directly to the latest capturev1.1.0
-rw-r--r--Makefile2
-rw-r--r--background.js10
-rw-r--r--manifest.json9
-rw-r--r--options.html21
-rw-r--r--options.js47
5 files changed, 85 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index f09e03c..6aa480a 100644
--- a/Makefile
+++ b/Makefile
@@ -14,7 +14,7 @@
NAME = wayback_machine_button
-FILES = background.js manifest.json $(ICONS)
+FILES = background.js manifest.json options.html options.js $(ICONS)
ICONS = icon128.png icon16.png icon48.png
.PHONY: all
diff --git a/background.js b/background.js
index 6beab65..4494843 100644
--- a/background.js
+++ b/background.js
@@ -13,7 +13,15 @@
// the License.
chrome.pageAction.onClicked.addListener(function(tab) {
- chrome.tabs.update(null, {url: 'https://web.archive.org/web/*/' + tab.url});
+ chrome.storage.sync.get({
+ clickBehavior: 'search',
+ }, function(items) {
+ let waybackStem = 'https://web.archive.org/web/*/';
+ if (items.clickBehavior == 'direct') {
+ waybackStem = 'https://web.archive.org/web/';
+ }
+ chrome.tabs.update(null, {url: waybackStem + tab.url});
+ });
});
chrome.runtime.onInstalled.addListener(function() {
diff --git a/manifest.json b/manifest.json
index 586022a..7985aeb 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Wayback Machine Lookup",
- "version": "1.0.1",
+ "version": "1.1.0",
"description": "Reopen the current tab in the Wayback Machine",
"icons": {
"16": "icon16.png",
@@ -17,8 +17,13 @@
"scripts": ["background.js"]
},
"minimum_chrome_version": "33",
+ "options_ui": {
+ "chrome_style": true,
+ "page": "options.html"
+ },
"permissions": [
"activeTab",
- "declarativeContent"
+ "declarativeContent",
+ "storage"
]
}
diff --git a/options.html b/options.html
new file mode 100644
index 0000000..1ea1d58
--- /dev/null
+++ b/options.html
@@ -0,0 +1,21 @@
+<!-- Copyright 2019 Google LLC
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License. You may obtain a copy of
+the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations under
+the License. -->
+<!DOCTYPE html>
+<title>Wayback Machine Lookup</title>
+<form id="clickBehavior">
+ Clicking the button:<br>
+ <label><input type="radio" name="clickBehavior" value="search"> Searches for the page in the Wayback Machine.</label><br>
+ <label><input type="radio" name="clickBehavior" value="direct"> Opens the most recent capture of the page.</label>
+</form>
+<script src="options.js"></script>
diff --git a/options.js b/options.js
new file mode 100644
index 0000000..b456900
--- /dev/null
+++ b/options.js
@@ -0,0 +1,47 @@
+// Copyright 2019 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+const DEFAULT_OPTIONS = {
+ clickBehavior: 'search',
+};
+
+document.addEventListener('DOMContentLoaded', function() {
+ chrome.storage.sync.get(DEFAULT_OPTIONS, function(items) {
+ for (let button of document.forms.clickBehavior) {
+ if (button.value == items.clickBehavior) {
+ button.checked = true;
+ break;
+ }
+ }
+ });
+});
+
+function saveOptions() {
+ let clickBehavior = DEFAULT_OPTIONS.clickBehavior;
+ for (let button of document.forms.clickBehavior) {
+ if (button.checked) {
+ clickBehavior = button.value;
+ break;
+ }
+ }
+ chrome.storage.sync.set({
+ clickBehavior: clickBehavior,
+ });
+}
+
+for (let button of document.forms.clickBehavior) {
+ button.addEventListener('change', function(event) {
+ saveOptions();
+ });
+}