Index: chrome/common/extensions/docs/examples/api/tabs/zoom/popup.js |
diff --git a/chrome/common/extensions/docs/examples/api/tabs/zoom/popup.js b/chrome/common/extensions/docs/examples/api/tabs/zoom/popup.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1b0fcd8db3ed14f33cf68efec26d8a6c1f250709 |
--- /dev/null |
+++ b/chrome/common/extensions/docs/examples/api/tabs/zoom/popup.js |
@@ -0,0 +1,136 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+/** |
+ * @fileoverview This code supports the popup behaviour of the extension, and |
+ * demonstrates how to: |
+ * |
+ * 1) Set the zoom for a tab using tabs.setZoom() |
+ * 2) Read the current zoom of a tab using tabs.getZoom() |
+ * 3) Set the zoom mode of a tab using tabs.setZoomSettings() |
+ * 4) Read the current zoom mode of a tab using |
+ * tabs.getZoomSettings() |
+ * |
+ * It also demonstrates using a zoom change listener to update the |
+ * contents of a control. |
+ */ |
+ |
+zoomStep = 1.1; |
+tabId = -1; |
+ |
+function displayZoomLevel(level) { |
+ var percentZoom = parseFloat(level) * 100; |
+ var zoom_percent_str = percentZoom.toFixed(1) + '%'; |
+ |
+ document.getElementById('displayDiv').textContent = zoom_percent_str; |
+} |
+ |
+document.addEventListener('DOMContentLoaded', function() { |
+ // Find the tabId of the current (active) tab. We could just omit the tabId |
+ // parameter in the function calls below, and they would act on the current |
+ // tab by default, but for the purposes of this demo we will always use the |
+ // API with an explicit tabId to demonstrate its use. |
+ chrome.tabs.query({active: true}, function (tabs) { |
+ if (tabs.length > 1) |
+ console.log( |
+ '[ZoomDemoExtension] Query unexpectedly returned more than 1 tab.'); |
+ tabId = tabs[0].id; |
+ |
+ chrome.tabs.getZoomSettings(tabId, function(zoomSettings) { |
+ var modeRadios = document.getElementsByName('modeRadio'); |
+ for (var i = 0; i < modeRadios.length; i++) { |
+ if (modeRadios[i].value == zoomSettings.mode) |
+ modeRadios[i].checked = true; |
+ } |
+ |
+ var scopeRadios = document.getElementsByName('scopeRadio'); |
+ for (var i = 0; i < scopeRadios.length; i++) { |
+ if (scopeRadios[i].value == zoomSettings.scope) |
+ scopeRadios[i].checked = true; |
+ } |
+ }); |
+ |
+ chrome.tabs.getZoom(tabId, displayZoomLevel); |
+ }); |
+ |
+ document.getElementById('increaseButton').onclick = doZoomIn; |
+ document.getElementById('decreaseButton').onclick = doZoomOut; |
+ document.getElementById('defaultButton').onclick = doZoomDefault; |
+ document.getElementById('setModeButton').onclick = doSetMode; |
+ document.getElementById('closeButton').onclick = doClose; |
+}); |
+ |
+function zoomChangeListener(zoomChangeInfo) { |
+ displayZoomLevel(zoomChangeInfo.newZoomFactor); |
+} |
+ |
+chrome.tabs.onZoomChange.addListener(zoomChangeListener); |
+ |
+function changeZoomByFactorDelta(factorDelta) { |
+ if (tabId == -1) |
+ return; |
+ |
+ chrome.tabs.getZoom(tabId, function(zoomFactor) { |
+ var newZoomFactor = factorDelta * zoomFactor; |
+ chrome.tabs.setZoom(tabId, newZoomFactor, function() { |
+ if (chrome.runtime.lastError) |
+ console.log('[ZoomDemoExtension] ' + chrome.runtime.lastError.message); |
+ }); |
+ }); |
+} |
+ |
+function doZoomIn() { |
+ changeZoomByFactorDelta(zoomStep); |
+} |
+ |
+function doZoomOut() { |
+ changeZoomByFactorDelta(1.0/zoomStep); |
+} |
+ |
+function doZoomDefault() { |
+ if (tabId == -1) |
+ return; |
+ |
+ chrome.tabs.setZoom(tabId, 1.0, function() { |
+ if (chrome.runtime.lastError) |
+ console.log('[ZoomDemoExtension] ' + chrome.runtime.lastError.message); |
+ }); |
+} |
+ |
+function doSetMode() { |
+ if (tabId == -1) |
+ return; |
+ |
+ var modeVal; |
+ var modeRadios = document.getElementsByName('modeRadio'); |
+ for (var i = 0; i < modeRadios.length; i++) { |
+ if (modeRadios[i].checked) |
+ modeVal = modeRadios[i].value; |
+ } |
+ |
+ var scopeVal; |
+ var scopeRadios = document.getElementsByName('scopeRadio'); |
+ for (var i = 0; i < scopeRadios.length; i++) { |
+ if (scopeRadios[i].checked) |
+ scopeVal = scopeRadios[i].value; |
+ } |
+ |
+ if (!modeVal || !scopeVal) { |
+ console.log( |
+ '[ZoomDemoExtension] Must specify values for both mode & scope.'); |
+ return; |
+ } |
+ |
+ chrome.tabs.setZoomSettings(tabId, { mode: modeVal, scope: scopeVal }, |
+ function() { |
+ if (chrome.runtime.lastError) { |
+ console.log('[ZoomDemoExtension] doSetMode() error: ' + |
+ chrome.runtime.lastError.message); |
+ } |
+ }); |
+} |
+ |
+function doClose() { |
+ self.close(); |
+} |