Skip to content

Commit a5630d1

Browse files
Paul Boocockpaulboocock
authored andcommitted
Prevent samesite cookie warning from triggering (close snowplow#886)
1 parent 45b934b commit a5630d1

3 files changed

Lines changed: 14 additions & 26 deletions

File tree

src/js/lib/detectors.js

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
import isUndefined from 'lodash/isUndefined';
3636
import { jstz } from 'jstimezonedetect';
37-
import { isFunction, cookie } from '../lib/helpers'
37+
import { isFunction } from '../lib/helpers'
3838

3939
var windowAlias = window,
4040
navigatorAlias = navigator,
@@ -89,14 +89,7 @@ export function localStorageAccessible() {
8989
/*
9090
* Does browser have cookies enabled (for this site)?
9191
*/
92-
export function hasCookies(testCookieName) {
93-
var cookieName = testCookieName || 'testcookie';
94-
95-
if (isUndefined(navigatorAlias.cookieEnabled)) {
96-
cookie(cookieName, '1');
97-
return cookie(cookieName) === '1' ? '1' : '0';
98-
}
99-
92+
export function hasCookies() {
10093
return navigatorAlias.cookieEnabled ? '1' : '0';
10194
}
10295

@@ -154,7 +147,7 @@ export function detectDocumentSize() {
154147
* @param string testCookieName Name to use for the test cookie
155148
* @return Object containing browser features
156149
*/
157-
export function detectBrowserFeatures(useCookies, testCookieName) {
150+
export function detectBrowserFeatures() {
158151
var i,
159152
mimeType,
160153
pluginMap = {
@@ -206,9 +199,7 @@ export function detectBrowserFeatures(useCookies, testCookieName) {
206199
// Other browser features
207200
features.res = screenAlias.width + 'x' + screenAlias.height;
208201
features.cd = screenAlias.colorDepth;
209-
if (useCookies) {
210-
features.cookie = hasCookies(testCookieName);
211-
}
202+
features.cookie = hasCookies();
212203

213204
return features;
214205
}

src/js/lib/helpers.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ export function attemptWriteSessionStorage(key, value) {
401401
/**
402402
* Finds the root domain
403403
*/
404-
export function findRootDomain() {
404+
export function findRootDomain(sameSite, secure) {
405405
var cookiePrefix = '_sp_root_domain_test_';
406406
var cookieName = cookiePrefix + new Date().getTime();
407407
var cookieValue = '_test_value_' + new Date().getTime();
@@ -410,13 +410,13 @@ export function findRootDomain() {
410410
var position = split.length - 1;
411411
while (position >= 0) {
412412
var currentDomain = split.slice(position, split.length).join('.');
413-
cookie(cookieName, cookieValue, 0, '/', currentDomain);
413+
cookie(cookieName, cookieValue, 0, '/', currentDomain, sameSite, secure);
414414
if (cookie(cookieName) === cookieValue) {
415415
// Clean up created cookie(s)
416-
deleteCookie(cookieName, currentDomain);
416+
deleteCookie(cookieName, currentDomain, sameSite, secure);
417417
var cookieNames = getCookiesWithPrefix(cookiePrefix);
418418
for (var i = 0; i < cookieNames.length; i++) {
419-
deleteCookie(cookieNames[i], currentDomain);
419+
deleteCookie(cookieNames[i], currentDomain, sameSite, secure);
420420
}
421421

422422
return currentDomain;
@@ -450,8 +450,8 @@ export function isValueInArray(val, array) {
450450
* @param cookieName The name of the cookie to delete
451451
* @param domainName The domain the cookie is in
452452
*/
453-
export function deleteCookie(cookieName, domainName) {
454-
cookie(cookieName, '', -1, '/', domainName);
453+
export function deleteCookie(cookieName, domainName, sameSite, secure) {
454+
cookie(cookieName, '', -1, '/', domainName, sameSite, secure);
455455
}
456456

457457
/**

src/js/tracker.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -256,10 +256,7 @@ export function Tracker(functionName, namespace, version, mutSnowplowState, argm
256256
// Browser language (or Windows language for IE). Imperfect but CloudFront doesn't log the Accept-Language header
257257
browserLanguage = navigatorAlias.userLanguage || navigatorAlias.language,
258258
// Browser features via client-side data collection
259-
browserFeatures = detectBrowserFeatures(
260-
configStateStorageStrategy == 'cookie' || configStateStorageStrategy == 'cookieAndLocalStorage',
261-
getSnowplowCookieName('testcookie')
262-
),
259+
browserFeatures = detectBrowserFeatures(),
263260
// Unique ID for the tracker instance used to mark links which are being tracked
264261
trackerId = functionName + '_' + namespace,
265262
// Last activity timestamp
@@ -353,7 +350,7 @@ export function Tracker(functionName, namespace, version, mutSnowplowState, argm
353350
let gdprBasisData = {};
354351

355352
if (argmap.hasOwnProperty('discoverRootDomain') && argmap.discoverRootDomain) {
356-
configCookieDomain = findRootDomain();
353+
configCookieDomain = findRootDomain(configCookieSameSite, configCookieSecure);
357354
}
358355

359356
if (autoContexts.gaCookies) {
@@ -691,8 +688,8 @@ export function Tracker(functionName, namespace, version, mutSnowplowState, argm
691688
const sesname = getSnowplowCookieName('ses');
692689
attemptDeleteLocalStorage(idname);
693690
attemptDeleteLocalStorage(sesname);
694-
deleteCookie(idname);
695-
deleteCookie(sesname);
691+
deleteCookie(idname, configCookieDomain, configCookieSameSite, configCookieSecure);
692+
deleteCookie(sesname, configCookieDomain, configCookieSameSite, configCookieSecure);
696693
}
697694

698695
/*

0 commit comments

Comments
 (0)