diff --git a/web/settings.js b/web/settings.js
new file mode 100644
index 000000000..e1b17d674
--- /dev/null
+++ b/web/settings.js
@@ -0,0 +1,115 @@
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+/* Copyright 2012 Mozilla Foundation
+ *
+ * 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.
+ */
+/* globals PDFJS, SETTINGS_MEMORY */
+
+'use strict';
+
+// Settings Manager - This is a utility for saving settings
+// First we see if localStorage is available
+// If not, we use FUEL in FF
+// Use asyncStorage for B2G
+var Settings = (function SettingsClosure() {
+//#if !(FIREFOX || MOZCENTRAL || B2G)
+ var isLocalStorageEnabled = (function localStorageEnabledTest() {
+ // Feature test as per http://diveintohtml5.info/storage.html
+ // The additional localStorage call is to get around a FF quirk, see
+ // bug #495747 in bugzilla
+ try {
+ return 'localStorage' in window && window['localStorage'] !== null &&
+ localStorage;
+ } catch (e) {
+ return false;
+ }
+ })();
+//#endif
+
+ function Settings(fingerprint) {
+ this.fingerprint = fingerprint;
+ this.initializedPromise = new PDFJS.Promise();
+
+ var resolvePromise = (function settingsResolvePromise(db) {
+ this.initialize(db || '{}');
+ this.initializedPromise.resolve();
+ }).bind(this);
+
+//#if B2G
+// asyncStorage.getItem('database', resolvePromise);
+//#endif
+
+//#if FIREFOX || MOZCENTRAL
+// resolvePromise(FirefoxCom.requestSync('getDatabase', null));
+//#endif
+
+//#if !(FIREFOX || MOZCENTRAL || B2G)
+ if (isLocalStorageEnabled)
+ resolvePromise(localStorage.getItem('database'));
+//#endif
+ }
+
+ Settings.prototype = {
+ initialize: function settingsInitialize(database) {
+ database = JSON.parse(database);
+ if (!('files' in database))
+ database.files = [];
+ if (database.files.length >= SETTINGS_MEMORY)
+ database.files.shift();
+ var index;
+ for (var i = 0, length = database.files.length; i < length; i++) {
+ var branch = database.files[i];
+ if (branch.fingerprint == this.fingerprint) {
+ index = i;
+ break;
+ }
+ }
+ if (typeof index != 'number')
+ index = database.files.push({fingerprint: this.fingerprint}) - 1;
+ this.file = database.files[index];
+ this.database = database;
+ },
+
+ set: function settingsSet(name, val) {
+ if (!this.initializedPromise.isResolved)
+ return;
+
+ var file = this.file;
+ file[name] = val;
+ var database = JSON.stringify(this.database);
+
+//#if B2G
+// asyncStorage.setItem('database', database);
+//#endif
+
+//#if FIREFOX || MOZCENTRAL
+// FirefoxCom.requestSync('setDatabase', database);
+//#endif
+
+//#if !(FIREFOX || MOZCENTRAL || B2G)
+ if (isLocalStorageEnabled)
+ localStorage.setItem('database', database);
+//#endif
+ },
+
+ get: function settingsGet(name, defaultValue) {
+ if (!this.initializedPromise.isResolved)
+ return defaultValue;
+
+ return this.file[name] || defaultValue;
+ }
+ };
+
+ return Settings;
+})();
diff --git a/web/viewer.html b/web/viewer.html
index eb9fe60cf..f3aaaa4a4 100644
--- a/web/viewer.html
+++ b/web/viewer.html
@@ -60,6 +60,7 @@ limitations under the License.
+
diff --git a/web/viewer.js b/web/viewer.js
index fe58e9170..94b3290d8 100644
--- a/web/viewer.js
+++ b/web/viewer.js
@@ -17,7 +17,7 @@
/* globals PDFJS, PDFBug, FirefoxCom, Stats, Cache, PDFFindBar, CustomStyle,
PDFFindController, ProgressBar, TextLayerBuilder, DownloadManager,
getFileName, getOutputScale, scrollIntoView, getPDFFileNameFromURL,
- PDFHistory, PageView, ThumbnailView, noContextMenuHandler,
+ PDFHistory, Settings, PageView, ThumbnailView, noContextMenuHandler,
SecondaryToolbar, PasswordPrompt, PresentationMode */
'use strict';
@@ -64,105 +64,10 @@ var mozL10n = document.mozL10n || document.webL10n;
//#include firefoxcom.js
//#endif
-// Settings Manager - This is a utility for saving settings
-// First we see if localStorage is available
-// If not, we use FUEL in FF
-// Use asyncStorage for B2G
-var Settings = (function SettingsClosure() {
-//#if !(FIREFOX || MOZCENTRAL || B2G)
- var isLocalStorageEnabled = (function localStorageEnabledTest() {
- // Feature test as per http://diveintohtml5.info/storage.html
- // The additional localStorage call is to get around a FF quirk, see
- // bug #495747 in bugzilla
- try {
- return 'localStorage' in window && window['localStorage'] !== null &&
- localStorage;
- } catch (e) {
- return false;
- }
- })();
-//#endif
-
- function Settings(fingerprint) {
- this.fingerprint = fingerprint;
- this.initializedPromise = new PDFJS.Promise();
-
- var resolvePromise = (function settingsResolvePromise(db) {
- this.initialize(db || '{}');
- this.initializedPromise.resolve();
- }).bind(this);
-
-//#if B2G
-// asyncStorage.getItem('database', resolvePromise);
-//#endif
-
-//#if FIREFOX || MOZCENTRAL
-// resolvePromise(FirefoxCom.requestSync('getDatabase', null));
-//#endif
-
-//#if !(FIREFOX || MOZCENTRAL || B2G)
- if (isLocalStorageEnabled)
- resolvePromise(localStorage.getItem('database'));
-//#endif
- }
-
- Settings.prototype = {
- initialize: function settingsInitialize(database) {
- database = JSON.parse(database);
- if (!('files' in database))
- database.files = [];
- if (database.files.length >= SETTINGS_MEMORY)
- database.files.shift();
- var index;
- for (var i = 0, length = database.files.length; i < length; i++) {
- var branch = database.files[i];
- if (branch.fingerprint == this.fingerprint) {
- index = i;
- break;
- }
- }
- if (typeof index != 'number')
- index = database.files.push({fingerprint: this.fingerprint}) - 1;
- this.file = database.files[index];
- this.database = database;
- },
-
- set: function settingsSet(name, val) {
- if (!this.initializedPromise.isResolved)
- return;
-
- var file = this.file;
- file[name] = val;
- var database = JSON.stringify(this.database);
-
-//#if B2G
-// asyncStorage.setItem('database', database);
-//#endif
-
-//#if FIREFOX || MOZCENTRAL
-// FirefoxCom.requestSync('setDatabase', database);
-//#endif
-
-//#if !(FIREFOX || MOZCENTRAL || B2G)
- if (isLocalStorageEnabled)
- localStorage.setItem('database', database);
-//#endif
- },
-
- get: function settingsGet(name, defaultValue) {
- if (!this.initializedPromise.isResolved)
- return defaultValue;
-
- return this.file[name] || defaultValue;
- }
- };
-
- return Settings;
-})();
-
var cache = new Cache(CACHE_SIZE);
var currentPageNumber = 1;
+//#include settings.js
//#include pdf_find_bar.js
//#include pdf_find_controller.js
//#include pdf_history.js