mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Fix problem with localStorage in some cross-origin embed situations
Summary: - Handle the possibility that any access to localStorage causes error. - Move getStorage() and getSessionStorage() safe functions to a separate file. - Use these safe functions in more places. Test Plan: Added a test case, using a webdriver instance that blocks third-party cookies, to enforce third-party restrictions. Added to gristUtil a way to override the webdriver instance. Reviewers: jarek Reviewed By: jarek Differential Revision: https://phab.getgrist.com/D3719
This commit is contained in:
@@ -7,8 +7,8 @@ import * as fse from 'fs-extra';
|
||||
import escapeRegExp = require('lodash/escapeRegExp');
|
||||
import noop = require('lodash/noop');
|
||||
import startCase = require('lodash/startCase');
|
||||
import { assert, driver, error, Key, WebElement, WebElementPromise } from 'mocha-webdriver';
|
||||
import { stackWrapFunc, stackWrapOwnMethods } from 'mocha-webdriver';
|
||||
import { assert, driver as driverOrig, error, Key, WebElement, WebElementPromise } from 'mocha-webdriver';
|
||||
import { stackWrapFunc, stackWrapOwnMethods, WebDriver } from 'mocha-webdriver';
|
||||
import * as path from 'path';
|
||||
|
||||
import { decodeUrl } from 'app/common/gristUrls';
|
||||
@@ -32,6 +32,15 @@ import type { AssertionError } from 'assert';
|
||||
// Wrap in a namespace so that we can apply stackWrapOwnMethods to all the exports together.
|
||||
namespace gristUtils {
|
||||
|
||||
// Allow overriding the global 'driver' to use in gristUtil.
|
||||
let driver: WebDriver;
|
||||
|
||||
// Substitute a custom driver to use with gristUtils functions. Omit argument to restore to default.
|
||||
export function setDriver(customDriver: WebDriver = driverOrig) { driver = customDriver; }
|
||||
|
||||
// Set the 'driver' to use here in before() callback, because driverOrig isn't set until then.
|
||||
before(() => setDriver());
|
||||
|
||||
const homeUtil = new HomeUtil(testUtils.fixturesRoot, server);
|
||||
|
||||
export const createNewDoc = homeUtil.createNewDoc.bind(homeUtil);
|
||||
|
||||
Reference in New Issue
Block a user