Merge pull request #3757 from Snuffleupagus/move-Settings
Move Settings from viewer.js to its own file
This commit is contained in:
		
						commit
						0cd4874df6
					
				
							
								
								
									
										125
									
								
								web/settings.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								web/settings.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,125 @@ | |||||||
|  | /* -*- 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. | ||||||
|  |  * | ||||||
|  |  * The way that settings are stored depends on how PDF.js is built, | ||||||
|  |  * for 'node make <flag>' the following cases exist: | ||||||
|  |  *  - FIREFOX or MOZCENTRAL - uses about:config. | ||||||
|  |  *  - B2G                   - uses asyncStorage. | ||||||
|  |  *  - GENERIC or CHROME     - uses localStorage, if it is available. | ||||||
|  |  */ | ||||||
|  | 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; | ||||||
|  | })(); | ||||||
| @ -60,6 +60,7 @@ limitations under the License. | |||||||
| <!--#if !PRODUCTION--> | <!--#if !PRODUCTION--> | ||||||
|     <script type="text/javascript" src="ui_utils.js"></script> |     <script type="text/javascript" src="ui_utils.js"></script> | ||||||
|     <script type="text/javascript" src="download_manager.js"></script> |     <script type="text/javascript" src="download_manager.js"></script> | ||||||
|  |     <script type="text/javascript" src="settings.js"></script> | ||||||
|     <script type="text/javascript" src="page_view.js"></script> |     <script type="text/javascript" src="page_view.js"></script> | ||||||
|     <script type="text/javascript" src="thumbnail_view.js"></script> |     <script type="text/javascript" src="thumbnail_view.js"></script> | ||||||
|     <script type="text/javascript" src="text_layer_builder.js"></script> |     <script type="text/javascript" src="text_layer_builder.js"></script> | ||||||
|  | |||||||
| @ -17,7 +17,7 @@ | |||||||
| /* globals PDFJS, PDFBug, FirefoxCom, Stats, Cache, PDFFindBar, CustomStyle, | /* globals PDFJS, PDFBug, FirefoxCom, Stats, Cache, PDFFindBar, CustomStyle, | ||||||
|            PDFFindController, ProgressBar, TextLayerBuilder, DownloadManager, |            PDFFindController, ProgressBar, TextLayerBuilder, DownloadManager, | ||||||
|            getFileName, getOutputScale, scrollIntoView, getPDFFileNameFromURL, |            getFileName, getOutputScale, scrollIntoView, getPDFFileNameFromURL, | ||||||
|            PDFHistory, PageView, ThumbnailView, noContextMenuHandler, |            PDFHistory, Settings, PageView, ThumbnailView, noContextMenuHandler, | ||||||
|            SecondaryToolbar, PasswordPrompt, PresentationMode */ |            SecondaryToolbar, PasswordPrompt, PresentationMode */ | ||||||
| 
 | 
 | ||||||
| 'use strict'; | 'use strict'; | ||||||
| @ -64,105 +64,10 @@ var mozL10n = document.mozL10n || document.webL10n; | |||||||
| //#include firefoxcom.js
 | //#include firefoxcom.js
 | ||||||
| //#endif
 | //#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 cache = new Cache(CACHE_SIZE); | ||||||
| var currentPageNumber = 1; | var currentPageNumber = 1; | ||||||
| 
 | 
 | ||||||
|  | //#include settings.js
 | ||||||
| //#include pdf_find_bar.js
 | //#include pdf_find_bar.js
 | ||||||
| //#include pdf_find_controller.js
 | //#include pdf_find_controller.js
 | ||||||
| //#include pdf_history.js
 | //#include pdf_history.js
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user