Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I increase QUOTA_BYTES_PER_ITEM in Chrome?

Is there any way to increase the chrome.storage.sync.QUOTA_BYTES_PER_ITEM ?

For me, the default 4096 Bytes is a little bit short.

I tried to execute

chrome.storage.sync.QUOTA_BYTES_PER_ITEM = 8192;

However, it seems that the actual limit doesn't change.

How can I do this?

like image 210
Pengin Avatar asked Nov 14 '12 04:11

Pengin


People also ask

What is Chrome storage sync get?

When using storage. sync , the stored data will automatically be synced to any Chrome browser that the user is logged into, provided the user has sync enabled. When Chrome is offline, Chrome stores the data locally. The next time the browser is online, Chrome syncs the data. Even if a user disables syncing, storage.


1 Answers

No, QUOTA_BYTES_PER_ITEM is there for reference only; it is not a settable value. You could use the value of QUOTA_BYTES_PER_ITEM to split an item up into multiple items, though:

function syncStore(key, objectToStore, callback) {
    var jsonstr = JSON.stringify(objectToStore);
    var i = 0;
    var storageObj = {};

    // split jsonstr into chunks and store them in an object indexed by `key_i`
    while(jsonstr.length > 0) {
        var index = key + "_" + i++;

        // since the key uses up some per-item quota, see how much is left for the value
        // also trim off 2 for quotes added by storage-time `stringify`
        var valueLength = chrome.storage.sync.QUOTA_BYTES_PER_ITEM - index.length - 2;

        // trim down segment so it will be small enough even when run through `JSON.stringify` again at storage time
        var segment = jsonstr.substr(0, valueLength);           
        while(JSON.stringify(segment).length > valueLength)
            segment = jsonstr.substr(0, --valueLength);

        storageObj[index] = segment;
        jsonstr = jsonstr.substr(valueLength);
    }

    // store all the chunks
    chrome.storage.sync.set(storageObj, callback);
}

Then write an analogous fetch function that fetches by key and glues the object back together.

like image 86
apsillers Avatar answered Oct 09 '22 23:10

apsillers