'use strict';

/**
 * Copyright 2009 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS-IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

const Cookies = require('./pad_utils').Cookies;

exports.padcookie = new class {
  constructor() {
    this.cookieName_ = window.location.protocol === 'https:' ? 'prefs' : 'prefsHttp';
    const prefs = this.readPrefs_() || {};
    delete prefs.userId;
    delete prefs.name;
    delete prefs.colorId;
    this.prefs_ = prefs;
    this.savePrefs_();
  }

  init() {
    if (this.readPrefs_() == null) {
      $.gritter.add({
        title: 'Error',
        text: html10n.get('pad.noCookie'),
        sticky: true,
        class_name: 'error',
      });
    }
  }

  readPrefs_() {
    try {
      const json = Cookies.get(this.cookieName_);
      if (json == null) return null;
      return JSON.parse(json);
    } catch (e) {
      return null;
    }
  }

  savePrefs_() {
    Cookies.set(this.cookieName_, JSON.stringify(this.prefs_), {expires: 365 * 100});
  }

  getPref(prefName) {
    return this.prefs_[prefName];
  }

  setPref(prefName, value) {
    this.prefs_[prefName] = value;
    this.savePrefs_();
  }
}();

@@ -791,16 +791,32 @@
 sHttp';%0A
+  %7D%0A%0A  init() %7B%0A
     cons
@@ -970,37 +970,85 @@
 Prefs_();%0A  
-%7D%0A%0A  init() %7B
+  // Re-read the saved cookie to test if cookies are enabled.
 %0A    if (thi

Move initial cookie read+save to `init()`