Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: chrome/resources/inspector/CookieItemsView.js

Issue 339015: Update Windows reference build to r30072.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/reference_builds/
Patch Set: Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/resources/inspector/ConsoleView.js ('k') | chrome/resources/inspector/DOMAgent.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:executable
+ *
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Joseph Pecoraro
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
15 * its contributors may be used to endorse or promote products derived
16 * from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30 WebInspector.CookieItemsView = function(cookieDomain)
31 {
32 WebInspector.View.call(this);
33
34 this.element.addStyleClass("storage-view");
35 this.element.addStyleClass("table");
36
37 this.deleteButton = new WebInspector.StatusBarButton(WebInspector.UIString(" Delete"), "delete-storage-status-bar-item");
38 this.deleteButton.visible = false;
39 this.deleteButton.addEventListener("click", this._deleteButtonClicked.bind(t his), false);
40
41 this.refreshButton = new WebInspector.StatusBarButton(WebInspector.UIString( "Refresh"), "refresh-storage-status-bar-item");
42 this.refreshButton.addEventListener("click", this._refreshButtonClicked.bind (this), false);
43
44 this._cookieDomain = cookieDomain;
45 }
46
47 WebInspector.CookieItemsView.prototype = {
48 get statusBarItems()
49 {
50 return [this.refreshButton.element, this.deleteButton.element];
51 },
52
53 show: function(parentElement)
54 {
55 WebInspector.View.prototype.show.call(this, parentElement);
56 this.update();
57 },
58
59 hide: function()
60 {
61 WebInspector.View.prototype.hide.call(this);
62 this.deleteButton.visible = false;
63 },
64
65 update: function()
66 {
67 this.element.removeChildren();
68
69 var self = this;
70 function callback(cookies, isAdvanced) {
71 var dataGrid = (isAdvanced ? self.dataGridForCookies(cookies) : self .simpleDataGridForCookies(cookies));
72 if (dataGrid) {
73 self._dataGrid = dataGrid;
74 self.element.appendChild(dataGrid.element);
75 self._dataGrid.updateWidths();
76 if (isAdvanced)
77 self.deleteButton.visible = true;
78 } else {
79 var emptyMsgElement = document.createElement("div");
80 emptyMsgElement.className = "storage-table-empty";
81 emptyMsgElement.textContent = WebInspector.UIString("This site h as no cookies.");
82 self.element.appendChild(emptyMsgElement);
83 self._dataGrid = null;
84 self.deleteButton.visible = false;
85 }
86 }
87
88 WebInspector.Cookies.getCookiesAsync(callback, this._cookieDomain);
89 },
90
91 dataGridForCookies: function(cookies)
92 {
93 if (!cookies.length)
94 return null;
95
96 for (var i = 0; i < cookies.length; ++i)
97 cookies[i].expires = new Date(cookies[i].expires);
98
99 var columns = { 0: {}, 1: {}, 2: {}, 3: {}, 4: {}, 5: {}, 6: {}, 7: {} } ;
100 columns[0].title = WebInspector.UIString("Name");
101 columns[0].width = columns[0].title.length;
102 columns[1].title = WebInspector.UIString("Value");
103 columns[1].width = columns[1].title.length;
104 columns[2].title = WebInspector.UIString("Domain");
105 columns[2].width = columns[2].title.length;
106 columns[3].title = WebInspector.UIString("Path");
107 columns[3].width = columns[3].title.length;
108 columns[4].title = WebInspector.UIString("Expires");
109 columns[4].width = columns[4].title.length;
110 columns[5].title = WebInspector.UIString("Size");
111 columns[5].width = columns[5].title.length;
112 columns[5].aligned = "right";
113 columns[6].title = WebInspector.UIString("HTTP");
114 columns[6].width = columns[6].title.length;
115 columns[6].aligned = "centered";
116 columns[7].title = WebInspector.UIString("Secure");
117 columns[7].width = columns[7].title.length;
118 columns[7].aligned = "centered";
119
120 function updateDataAndColumn(index, value) {
121 data[index] = value;
122 if (value.length > columns[index].width)
123 columns[index].width = value.length;
124 }
125
126 var data;
127 var nodes = [];
128 for (var i = 0; i < cookies.length; ++i) {
129 var cookie = cookies[i];
130 data = {};
131
132 updateDataAndColumn(0, cookie.name);
133 updateDataAndColumn(1, cookie.value);
134 updateDataAndColumn(2, cookie.domain);
135 updateDataAndColumn(3, cookie.path);
136 updateDataAndColumn(4, (cookie.session ? WebInspector.UIString("Sess ion") : cookie.expires.toGMTString()));
137 updateDataAndColumn(5, Number.bytesToString(cookie.size, WebInspecto r.UIString));
138 updateDataAndColumn(6, (cookie.httpOnly ? "\u2713" : "")); // Checkm ark
139 updateDataAndColumn(7, (cookie.secure ? "\u2713" : "")); // Checkmar k
140
141 var node = new WebInspector.DataGridNode(data, false);
142 node.cookie = cookie;
143 node.selectable = true;
144 nodes.push(node);
145 }
146
147 var totalColumnWidths = 0;
148 for (var columnIdentifier in columns)
149 totalColumnWidths += columns[columnIdentifier].width;
150
151 // Enforce the Value column (the 2nd column) to be a max of 33%
152 // tweaking the raw total width because may massively outshadow the othe rs
153 var valueColumnWidth = columns[1].width;
154 if (valueColumnWidth / totalColumnWidths > 0.33) {
155 totalColumnWidths -= valueColumnWidth;
156 totalColumnWidths *= 1.33;
157 columns[1].width = totalColumnWidths * 0.33;
158 }
159
160 // Calculate the percentage width for the columns.
161 const minimumPrecent = 6;
162 var recoupPercent = 0;
163 for (var columnIdentifier in columns) {
164 var width = columns[columnIdentifier].width;
165 width = Math.round((width / totalColumnWidths) * 100);
166 if (width < minimumPrecent) {
167 recoupPercent += (minimumPrecent - width);
168 width = minimumPrecent;
169 }
170 columns[columnIdentifier].width = width;
171 }
172
173 // Enforce the minimum percentage width. (need to narrow total percentag e due to earlier additions)
174 while (recoupPercent > 0) {
175 for (var columnIdentifier in columns) {
176 if (columns[columnIdentifier].width > minimumPrecent) {
177 --columns[columnIdentifier].width;
178 --recoupPercent;
179 if (!recoupPercent)
180 break;
181 }
182 }
183 }
184
185 for (var columnIdentifier in columns)
186 columns[columnIdentifier].width += "%";
187
188 var dataGrid = new WebInspector.DataGrid(columns);
189 var length = nodes.length;
190 for (var i = 0; i < length; ++i)
191 dataGrid.appendChild(nodes[i]);
192 if (length > 0)
193 nodes[0].selected = true;
194
195 return dataGrid;
196 },
197
198 simpleDataGridForCookies: function(cookies)
199 {
200 if (!cookies.length)
201 return null;
202
203 var columns = {};
204 columns[0] = {};
205 columns[1] = {};
206 columns[0].title = WebInspector.UIString("Name");
207 columns[0].width = columns[0].title.length;
208 columns[1].title = WebInspector.UIString("Value");
209 columns[1].width = columns[1].title.length;
210
211 var nodes = [];
212 for (var i = 0; i < cookies.length; ++i) {
213 var cookie = cookies[i];
214 var data = {};
215
216 var name = cookie.name;
217 data[0] = name;
218 if (name.length > columns[0].width)
219 columns[0].width = name.length;
220
221 var value = cookie.value;
222 data[1] = value;
223 if (value.length > columns[1].width)
224 columns[1].width = value.length;
225
226 var node = new WebInspector.DataGridNode(data, false);
227 node.selectable = true;
228 nodes.push(node);
229 }
230
231 var totalColumnWidths = columns[0].width + columns[1].width;
232 var width = Math.round((columns[0].width * 100) / totalColumnWidths);
233 const minimumPrecent = 20;
234 if (width < minimumPrecent)
235 width = minimumPrecent;
236 if (width > 100 - minimumPrecent)
237 width = 100 - minimumPrecent;
238 columns[0].width = width;
239 columns[1].width = 100 - width;
240 columns[0].width += "%";
241 columns[1].width += "%";
242
243 var dataGrid = new WebInspector.DataGrid(columns);
244 var length = nodes.length;
245 for (var i = 0; i < length; ++i)
246 dataGrid.appendChild(nodes[i]);
247 if (length > 0)
248 nodes[0].selected = true;
249
250 return dataGrid;
251 },
252
253 resize: function()
254 {
255 if (this._dataGrid)
256 this._dataGrid.updateWidths();
257 },
258
259 _deleteButtonClicked: function(event)
260 {
261 if (!this._dataGrid)
262 return;
263
264 var cookie = this._dataGrid.selectedNode.cookie;
265 InspectorController.deleteCookie(cookie.name, this._cookieDomain);
266 this.update();
267 },
268
269 _refreshButtonClicked: function(event)
270 {
271 this.update();
272 }
273 }
274
275 WebInspector.CookieItemsView.prototype.__proto__ = WebInspector.View.prototype;
OLDNEW
« no previous file with comments | « chrome/resources/inspector/ConsoleView.js ('k') | chrome/resources/inspector/DOMAgent.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698