Skip to content

Commit ed56258

Browse files
committed
0.8.1
1 parent 7df6022 commit ed56258

File tree

6 files changed

+39
-22
lines changed

6 files changed

+39
-22
lines changed

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cross-storage",
3-
"version": "0.8.0",
3+
"version": "0.8.1",
44
"description": "Cross domain local storage",
55
"license": "Apache-2.0",
66
"authors": [

dist/client.js

+22-11
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* cross-storage - Cross domain local storage
33
*
4-
* @version 0.8.0
4+
* @version 0.8.1
55
* @link https://github.com/zendesk/cross-storage
66
* @author Daniel St. Jules <danielst.jules@gmail.com>
77
* @copyright Zendesk
@@ -274,15 +274,19 @@
274274
var client = this;
275275

276276
this._listener = function(message) {
277-
var i, error, response;
277+
var i, origin, error, response;
278278

279-
// Ignore invalid messages, those not from the correct hub, or when
280-
// the client has closed
281-
if (client._closed || !message.data || typeof message.data !== 'string' ||
282-
message.origin !== client._origin) {
279+
// Ignore invalid messages or those after the client has closed
280+
if (client._closed || !message.data || typeof message.data !== 'string') {
283281
return;
284282
}
285283

284+
// postMessage returns the string "null" as the origin for "file://"
285+
origin = (message.origin === 'null') ? 'file://' : message.origin;
286+
287+
// Ignore messages not from the correct origin
288+
if (origin !== client._origin) return;
289+
286290
// LocalStorage isn't available in the hub
287291
if (message.data === 'cross-storage:unavailable') {
288292
if (!client._closed) client.close();
@@ -337,14 +341,18 @@
337341
* establish a connected state.
338342
*/
339343
CrossStorageClient.prototype._poll = function() {
340-
var client, interval;
344+
var client, interval, targetOrigin;
341345

342346
client = this;
347+
348+
// postMessage requires that the target origin be set to "*" for "file://"
349+
targetOrigin = (client._origin === 'file://') ? '*' : client._origin;
350+
343351
interval = setInterval(function() {
344352
if (client._connected) return clearInterval(interval);
345353
if (!client._hub) return;
346354

347-
client._hub.postMessage('cross-storage:poll', client._origin);
355+
client._hub.postMessage('cross-storage:poll', targetOrigin);
348356
}, 1000);
349357
};
350358

@@ -405,7 +413,7 @@
405413
};
406414

407415
return new this._promise(function(resolve, reject) {
408-
var timeout, originalToJSON;
416+
var timeout, originalToJSON, targetOrigin;
409417

410418
// Timeout if a response isn't received after 4s
411419
timeout = setTimeout(function() {
@@ -429,8 +437,11 @@
429437
Array.prototype.toJSON = null;
430438
}
431439

440+
// postMessage requires that the target origin be set to "*" for "file://"
441+
targetOrigin = (client._origin === 'file://') ? '*' : client._origin;
442+
432443
// Send serialized message
433-
client._hub.postMessage(JSON.stringify(req), client._origin);
444+
client._hub.postMessage(JSON.stringify(req), targetOrigin);
434445

435446
// Restore original toJSON
436447
if (originalToJSON) {
@@ -447,7 +458,7 @@
447458
} else if (typeof exports !== 'undefined') {
448459
exports.CrossStorageClient = CrossStorageClient;
449460
} else if (typeof define === 'function' && define.amd) {
450-
define('CrossStorageClient', [], function() {
461+
define([], function() {
451462
return CrossStorageClient;
452463
});
453464
} else {

dist/client.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/hub.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* cross-storage - Cross domain local storage
33
*
4-
* @version 0.8.0
4+
* @version 0.8.1
55
* @link https://github.com/zendesk/cross-storage
66
* @author Daniel St. Jules <danielst.jules@gmail.com>
77
* @copyright Zendesk
@@ -76,7 +76,10 @@
7676
* @param {MessageEvent} message A message to be processed
7777
*/
7878
CrossStorageHub._listener = function(message) {
79-
var uri, available, request, method, error, result, response;
79+
var origin, targetOrigin, request, method, error, result, response;
80+
81+
// postMessage returns the string "null" as the origin for "file://"
82+
origin = (message.origin === 'null') ? 'file://' : message.origin;
8083

8184
// Handle polling for a ready message
8285
if (message.data === 'cross-storage:poll') {
@@ -91,7 +94,7 @@
9194

9295
if (!method) {
9396
return;
94-
} else if (!CrossStorageHub._permitted(message.origin, method)) {
97+
} else if (!CrossStorageHub._permitted(origin, method)) {
9598
error = 'Invalid permissions for ' + method;
9699
} else {
97100
try {
@@ -107,7 +110,10 @@
107110
result: result
108111
});
109112

110-
window.parent.postMessage(response, message.origin);
113+
// postMessage requires that the target origin be set to "*" for "file://"
114+
targetOrigin = (origin === 'file://') ? '*' : origin;
115+
116+
window.parent.postMessage(response, targetOrigin);
111117
};
112118

113119
/**
@@ -271,7 +277,7 @@
271277
} else if (typeof exports !== 'undefined') {
272278
exports.CrossStorageHub = CrossStorageHub;
273279
} else if (typeof define === 'function' && define.amd) {
274-
define('CrossStorageHub', [], function() {
280+
define([], function() {
275281
return CrossStorageHub;
276282
});
277283
} else {

dist/hub.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cross-storage",
3-
"version": "0.8.0",
3+
"version": "0.8.1",
44
"description": "Cross domain local storage",
55
"keywords": [
66
"local",

0 commit comments

Comments
 (0)