File: cookie.js

package info (click to toggle)
webdeveloper 1.2.5%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 5,364 kB
  • ctags: 1,608
  • sloc: makefile: 10
file content (139 lines) | stat: -rw-r--r-- 4,190 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
var WebDeveloper = WebDeveloper || {};

WebDeveloper.Cookie = WebDeveloper.Cookie || {};

// Handles the cookie dialog being accepted
WebDeveloper.Cookie.accept = function()
{
  var host        = document.getElementById("web-developer-host").value.trim();
  var errors      = "";
  var expires     = document.getElementById("web-developer-expires").value.trim();
  var expiresDate = new Date(expires);
  var name        = document.getElementById("web-developer-name").value.trim();
  var path        = document.getElementById("web-developer-path").value.trim();

  // If the name is empty
  if(!name)
  {
    errors += WebDeveloper.Locales.getString("emptyName") + "\n";
  }

  // If the host is empty
  if(!host)
  {
    errors += WebDeveloper.Locales.getString("emptyHost") + "\n";
  }

  // If the path is empty
  if(!path)
  {
    errors += WebDeveloper.Locales.getString("emptyPath") + "\n";
  }

  // If this is not a session cookie
  if(!document.getElementById("web-developer-session-cookie").checked)
  {
    // If the expires is empty
    if(!expires)
    {
      errors += WebDeveloper.Locales.getString("emptyExpires") + "\n";
    }
    else if(expiresDate && expiresDate == "Invalid Date")
    {
      errors += WebDeveloper.Locales.getString("invalidExpires") + "\n";
    }
  }

  // If there are errors
  if(errors)
  {
    WebDeveloper.Common.displayError(WebDeveloper.Locales.getString("addCookieError"), errors.trim());

    return false;
  }
  else
  {
    var value            = document.getElementById("web-developer-value").value.trim();
    var cookie           = name + "=" + value + ";path=" + path + ";";
    var cookiePreference = WebDeveloper.Preferences.getIntegerPreference("network.cookie.cookieBehavior");
    var scheme           = "http://";
    var secure           = document.getElementById("web-developer-secure-cookie").checked;
    var session          = document.getElementById("web-developer-session-cookie").checked;
    var uri              = null;

    // If the host is a domain
    if(host.charAt(0) == ".")
    {
      cookie += "domain=" + host + ";";
      host    = host.substring(1);
    }

    // If this is not a session cookie
    if(!session)
    {
      cookie += "expires=" + expiresDate.toUTCString() + ";";
    }

    // If the cookie is secure
    if(secure)
    {
      cookie += "secure;";
      scheme  = "https://";
    }

    uri = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).newURI(scheme + host + path, null, null);

    // If the cookie preference is not allowing all cookies
    if(cookiePreference !== 0)
    {
      WebDeveloper.Preferences.setIntegerPreference("network.cookie.cookieBehavior", 0);
    }

    Components.classes["@mozilla.org/cookieService;1"].getService().QueryInterface(Components.interfaces.nsICookieService).setCookieString(uri, null, cookie.substring(0, cookie.length - 1), null);

    // If the cookie preference was not allowing all cookies
    if(cookiePreference !== 0)
    {
      WebDeveloper.Preferences.setIntegerPreference("network.cookie.cookieBehavior", cookiePreference);
    }
  }

  return true;
};

// Initializes the cookie dialog
WebDeveloper.Cookie.initialize = function()
{
  var date = new Date();
  var url  = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURL);

  url.spec = WebDeveloper.Common.getContentDocument().documentURI;

  date.setDate(date.getDate() + 1);

  document.getElementById("web-developer-expires").value = date.toUTCString();
  document.getElementById("web-developer-host").value    = url.host;
  document.getElementById("web-developer-path").value    = url.path;
};

// Updates the expiry status
WebDeveloper.Cookie.updateExpiryStatus = function()
{
  var expires = document.getElementById("web-developer-expires");

  // If session cookie is checked
  if(document.getElementById("web-developer-session-cookie").checked)
  {
    expires.disabled = true;
    expires.value    = "";
  }
  else
  {
    var date = new Date();

    date.setDate(date.getDate() + 1);

    expires.disabled = false;
    expires.value    = date.toUTCString();
  }
};