Refactors history and how the database is stored
This commit is contained in:
parent
9c59437ac3
commit
b39f0c311c
10
extensions/firefox/bootstrap.js
vendored
10
extensions/firefox/bootstrap.js
vendored
@ -43,13 +43,6 @@ function getBoolPref(pref, def) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setStringPref(pref, value) {
|
|
||||||
var str = Cc['@mozilla.org/supports-string;1']
|
|
||||||
.createInstance(Ci.nsISupportsString);
|
|
||||||
str.data = value;
|
|
||||||
Services.prefs.setComplexValue(pref, Ci.nsISupportsString, str);
|
|
||||||
}
|
|
||||||
|
|
||||||
function log(str) {
|
function log(str) {
|
||||||
if (!getBoolPref(EXT_PREFIX + '.pdfBugEnabled', false)) {
|
if (!getBoolPref(EXT_PREFIX + '.pdfBugEnabled', false)) {
|
||||||
return;
|
return;
|
||||||
@ -176,9 +169,10 @@ function shutdown(aData, aReason) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function install(aData, aReason) {
|
function install(aData, aReason) {
|
||||||
|
// TODO remove after some time -- cleanup of unused preferences
|
||||||
|
Services.prefs.clearUserPref(EXT_PREFIX + '.database');
|
||||||
}
|
}
|
||||||
|
|
||||||
function uninstall(aData, aReason) {
|
function uninstall(aData, aReason) {
|
||||||
setStringPref(EXT_PREFIX + '.database', '{}');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,15 +128,19 @@ let PdfJs = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_migrate: function migrate() {
|
_migrate: function migrate() {
|
||||||
const VERSION = 1;
|
const VERSION = 2;
|
||||||
var currentVersion = getIntPref(PREF_MIGRATION_VERSION, 0);
|
var currentVersion = getIntPref(PREF_MIGRATION_VERSION, 0);
|
||||||
if (currentVersion >= VERSION) {
|
if (currentVersion >= VERSION) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Make pdf.js the default pdf viewer on the first migration.
|
// Make pdf.js the default pdf viewer on the first migration.
|
||||||
if (currentVersion < 2) {
|
if (currentVersion < 1) {
|
||||||
this._becomeHandler();
|
this._becomeHandler();
|
||||||
}
|
}
|
||||||
|
if (currentVersion < 2) {
|
||||||
|
// cleaning up of unused database preference (see #3994)
|
||||||
|
Services.prefs.clearUserPref(PREF_PREFIX + '.database');
|
||||||
|
}
|
||||||
Services.prefs.setIntPref(PREF_MIGRATION_VERSION, VERSION);
|
Services.prefs.setIntPref(PREF_MIGRATION_VERSION, VERSION);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -32,7 +32,6 @@ const PDFJS_EVENT_ID = 'pdf.js.message';
|
|||||||
const PDF_CONTENT_TYPE = 'application/pdf';
|
const PDF_CONTENT_TYPE = 'application/pdf';
|
||||||
const PREF_PREFIX = 'PDFJSSCRIPT_PREF_PREFIX';
|
const PREF_PREFIX = 'PDFJSSCRIPT_PREF_PREFIX';
|
||||||
const PDF_VIEWER_WEB_PAGE = 'resource://pdf.js/web/viewer.html';
|
const PDF_VIEWER_WEB_PAGE = 'resource://pdf.js/web/viewer.html';
|
||||||
const MAX_DATABASE_LENGTH = 4096;
|
|
||||||
const MAX_NUMBER_OF_PREFS = 50;
|
const MAX_NUMBER_OF_PREFS = 50;
|
||||||
const MAX_STRING_PREF_LENGTH = 128;
|
const MAX_STRING_PREF_LENGTH = 128;
|
||||||
|
|
||||||
@ -295,19 +294,6 @@ ChromeActions.prototype = {
|
|||||||
channel.asyncOpen(listener, null);
|
channel.asyncOpen(listener, null);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
setDatabase: function(data) {
|
|
||||||
if (this.isInPrivateBrowsing())
|
|
||||||
return;
|
|
||||||
// Protect against something sending tons of data to setDatabase.
|
|
||||||
if (data.length > MAX_DATABASE_LENGTH)
|
|
||||||
return;
|
|
||||||
setStringPref(PREF_PREFIX + '.database', data);
|
|
||||||
},
|
|
||||||
getDatabase: function() {
|
|
||||||
if (this.isInPrivateBrowsing())
|
|
||||||
return '{}';
|
|
||||||
return getStringPref(PREF_PREFIX + '.database', '{}');
|
|
||||||
},
|
|
||||||
getLocale: function() {
|
getLocale: function() {
|
||||||
return getStringPref('general.useragent.locale', 'en-US');
|
return getStringPref('general.useragent.locale', 'en-US');
|
||||||
},
|
},
|
||||||
|
@ -537,3 +537,23 @@ if (typeof PDFJS === 'undefined') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
(function checkStorages() {
|
||||||
|
// 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 {
|
||||||
|
if ('localStorage' in window && window['localStorage'] !== null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
window.localStorage = {
|
||||||
|
data: Object.create(null),
|
||||||
|
getItem: function (key) {
|
||||||
|
return this.data[key];
|
||||||
|
},
|
||||||
|
setItem: function (key, value) {
|
||||||
|
this.data[key] = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
/* globals DEFAULT_PREFERENCES, isLocalStorageEnabled, Promise */
|
/* globals DEFAULT_PREFERENCES, Promise */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@ -174,19 +174,14 @@ var Preferences = {
|
|||||||
//#if !(FIREFOX || MOZCENTRAL || B2G)
|
//#if !(FIREFOX || MOZCENTRAL || B2G)
|
||||||
Preferences._writeToStorage = function (prefObj) {
|
Preferences._writeToStorage = function (prefObj) {
|
||||||
return new Promise(function (resolve) {
|
return new Promise(function (resolve) {
|
||||||
if (isLocalStorageEnabled) {
|
localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj));
|
||||||
localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj));
|
|
||||||
}
|
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
Preferences._readFromStorage = function (prefObj) {
|
Preferences._readFromStorage = function (prefObj) {
|
||||||
return new Promise(function (resolve) {
|
return new Promise(function (resolve) {
|
||||||
var readPrefs;
|
var readPrefs = JSON.parse(localStorage.getItem('pdfjs.preferences'));
|
||||||
if (isLocalStorageEnabled) {
|
|
||||||
readPrefs = JSON.parse(localStorage.getItem('pdfjs.preferences'));
|
|
||||||
}
|
|
||||||
resolve(readPrefs);
|
resolve(readPrefs);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -257,16 +257,3 @@ var Cache = function cacheCache(size) {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
//#if !(FIREFOX || MOZCENTRAL || B2G)
|
|
||||||
var isLocalStorageEnabled = (function isLocalStorageEnabledClosure() {
|
|
||||||
// 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
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
/* globals PDFJS, VIEW_HISTORY_MEMORY, isLocalStorageEnabled, Promise */
|
/* globals PDFJS, VIEW_HISTORY_MEMORY, Promise */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@ -24,7 +24,7 @@
|
|||||||
*
|
*
|
||||||
* The way that the view parameters are stored depends on how PDF.js is built,
|
* The way that the view parameters are stored depends on how PDF.js is built,
|
||||||
* for 'node make <flag>' the following cases exist:
|
* for 'node make <flag>' the following cases exist:
|
||||||
* - FIREFOX or MOZCENTRAL - uses about:config.
|
* - FIREFOX or MOZCENTRAL - uses sessionStorage.
|
||||||
* - B2G - uses asyncStorage.
|
* - B2G - uses asyncStorage.
|
||||||
* - GENERIC or CHROME - uses localStorage, if it is available.
|
* - GENERIC or CHROME - uses localStorage, if it is available.
|
||||||
*/
|
*/
|
||||||
@ -48,13 +48,11 @@ var ViewHistory = (function ViewHistoryClosure() {
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if FIREFOX || MOZCENTRAL
|
//#if FIREFOX || MOZCENTRAL
|
||||||
// resolvePromise(FirefoxCom.requestSync('getDatabase', null));
|
// resolvePromise(sessionStorage.getItem('pdfjsHistory'));
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if !(FIREFOX || MOZCENTRAL || B2G)
|
//#if !(FIREFOX || MOZCENTRAL || B2G)
|
||||||
if (isLocalStorageEnabled) {
|
resolvePromise(localStorage.getItem('database'));
|
||||||
resolvePromise(localStorage.getItem('database'));
|
|
||||||
}
|
|
||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,13 +93,11 @@ var ViewHistory = (function ViewHistoryClosure() {
|
|||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if FIREFOX || MOZCENTRAL
|
//#if FIREFOX || MOZCENTRAL
|
||||||
// FirefoxCom.requestSync('setDatabase', database);
|
// sessionStorage.setItem('pdfjsHistory',database);
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
//#if !(FIREFOX || MOZCENTRAL || B2G)
|
//#if !(FIREFOX || MOZCENTRAL || B2G)
|
||||||
if (isLocalStorageEnabled) {
|
localStorage.setItem('database', database);
|
||||||
localStorage.setItem('database', database);
|
|
||||||
}
|
|
||||||
//#endif
|
//#endif
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user