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

Side by Side Diff: chrome/browser/shell_integration_unittest.cc

Issue 7000018: GTK: Use glib's desktop file parser instead of our hand rolled one. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updated comments Created 9 years, 7 months 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/shell_integration.h" 5 #include "chrome/browser/shell_integration.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 "[Desktop Entry]\n" 178 "[Desktop Entry]\n"
179 "Version=1.0\n" 179 "Version=1.0\n"
180 "Encoding=UTF-8\n" 180 "Encoding=UTF-8\n"
181 "Name=Google Chrome\n" 181 "Name=Google Chrome\n"
182 "Comment=The web browser from Google\n" 182 "Comment=The web browser from Google\n"
183 "Exec=/opt/google/chrome/google-chrome %U\n" 183 "Exec=/opt/google/chrome/google-chrome %U\n"
184 "Terminal=false\n" 184 "Terminal=false\n"
185 "Icon=/opt/google/chrome/product_logo_48.png\n" 185 "Icon=/opt/google/chrome/product_logo_48.png\n"
186 "Type=Application\n" 186 "Type=Application\n"
187 "Categories=Application;Network;WebBrowser;\n" 187 "Categories=Application;Network;WebBrowser;\n"
188 "MimeType=text/html;text/xml;application/xhtml_xml;\n", 188 "MimeType=text/html;text/xml;application/xhtml_xml;\n"
189 "X-Ayatana-Desktop-Shortcuts=NewWindow;\n"
190 "\n"
191 "[NewWindow Shortcut Group]\n"
192 "Name=Open New Window\n"
193 "Exec=/opt/google/chrome/google-chrome\n"
194 "TargetEnvironment=Unity\n",
189 195
190 "#!/usr/bin/env xdg-open\n" 196 "#!/usr/bin/env xdg-open\n"
191 "[Desktop Entry]\n" 197 "[Desktop Entry]\n"
192 "Version=1.0\n" 198 "Version=1.0\n"
193 "Encoding=UTF-8\n" 199 "Encoding=UTF-8\n"
194 "Name=GMail\n" 200 "Name=GMail\n"
195 "Exec=/opt/google/chrome/google-chrome --app=http://gmail.com/\n" 201 "Exec=/opt/google/chrome/google-chrome --app=http://gmail.com/\n"
196 "Terminal=false\n" 202 "Terminal=false\n"
197 "Icon=chrome-http__gmail.com\n" 203 "Icon=chrome-http__gmail.com\n"
198 "Type=Application\n" 204 "Type=Application\n"
199 "Categories=Application;Network;WebBrowser;\n" 205 "Categories=Application;Network;WebBrowser;\n"
200 "StartupWMClass=gmail.com\n" 206 "StartupWMClass=gmail.com\n"
201 }, 207 },
202 208
203 // Make sure we don't insert duplicate shebangs. 209 // Make sure we don't insert duplicate shebangs.
204 { "http://gmail.com", 210 { "http://gmail.com",
205 "GMail", 211 "GMail",
206 "chrome-http__gmail.com", 212 "chrome-http__gmail.com",
207 213
208 "#!/some/shebang\n" 214 "#!/some/shebang\n"
215 "[Desktop Entry]\n"
209 "Name=Google Chrome\n" 216 "Name=Google Chrome\n"
210 "Exec=/opt/google/chrome/google-chrome %U\n", 217 "Exec=/opt/google/chrome/google-chrome %U\n",
211 218
212 "#!/usr/bin/env xdg-open\n" 219 "#!/usr/bin/env xdg-open\n"
220 "[Desktop Entry]\n"
213 "Name=GMail\n" 221 "Name=GMail\n"
214 "Exec=/opt/google/chrome/google-chrome --app=http://gmail.com/\n" 222 "Exec=/opt/google/chrome/google-chrome --app=http://gmail.com/\n"
223 "Icon=chrome-http__gmail.com\n"
215 "StartupWMClass=gmail.com\n" 224 "StartupWMClass=gmail.com\n"
216 }, 225 },
217 226
218 // Make sure i18n-ed comments are removed. 227 // Make sure i18n-ed comments are removed.
219 { "http://gmail.com", 228 { "http://gmail.com",
220 "GMail", 229 "GMail",
221 "chrome-http__gmail.com", 230 "chrome-http__gmail.com",
222 231
232 "[Desktop Entry]\n"
223 "Name=Google Chrome\n" 233 "Name=Google Chrome\n"
224 "Exec=/opt/google/chrome/google-chrome %U\n" 234 "Exec=/opt/google/chrome/google-chrome %U\n"
225 "Comment[pl]=Jakis komentarz.\n", 235 "Comment[pl]=Jakis komentarz.\n",
226 236
227 "#!/usr/bin/env xdg-open\n" 237 "#!/usr/bin/env xdg-open\n"
238 "[Desktop Entry]\n"
228 "Name=GMail\n" 239 "Name=GMail\n"
229 "Exec=/opt/google/chrome/google-chrome --app=http://gmail.com/\n" 240 "Exec=/opt/google/chrome/google-chrome --app=http://gmail.com/\n"
241 "Icon=chrome-http__gmail.com\n"
230 "StartupWMClass=gmail.com\n" 242 "StartupWMClass=gmail.com\n"
231 }, 243 },
232 244
233 // Make sure that empty icons are replaced by the chrome icon. 245 // Make sure that empty icons are replaced by the chrome icon.
234 { "http://gmail.com", 246 { "http://gmail.com",
235 "GMail", 247 "GMail",
236 "", 248 "",
237 249
250 "[Desktop Entry]\n"
238 "Name=Google Chrome\n" 251 "Name=Google Chrome\n"
239 "Exec=/opt/google/chrome/google-chrome %U\n" 252 "Exec=/opt/google/chrome/google-chrome %U\n"
240 "Comment[pl]=Jakis komentarz.\n" 253 "Comment[pl]=Jakis komentarz.\n"
241 "Icon=/opt/google/chrome/product_logo_48.png\n", 254 "Icon=/opt/google/chrome/product_logo_48.png\n",
242 255
243 "#!/usr/bin/env xdg-open\n" 256 "#!/usr/bin/env xdg-open\n"
257 "[Desktop Entry]\n"
244 "Name=GMail\n" 258 "Name=GMail\n"
245 "Exec=/opt/google/chrome/google-chrome --app=http://gmail.com/\n" 259 "Exec=/opt/google/chrome/google-chrome --app=http://gmail.com/\n"
246 "Icon=/opt/google/chrome/product_logo_48.png\n" 260 "Icon=/opt/google/chrome/product_logo_48.png\n"
247 "StartupWMClass=gmail.com\n" 261 "StartupWMClass=gmail.com\n"
248 }, 262 },
249 263
250 // Now we're starting to be more evil... 264 // Now we're starting to be more evil...
251 { "http://evil.com/evil --join-the-b0tnet", 265 { "http://evil.com/evil --join-the-b0tnet",
252 "Ownz0red\nExec=rm -rf /", 266 "Ownz0red\nExec=rm -rf /",
253 "chrome-http__evil.com_evil", 267 "chrome-http__evil.com_evil",
254 268
269 "[Desktop Entry]\n"
255 "Name=Google Chrome\n" 270 "Name=Google Chrome\n"
256 "Exec=/opt/google/chrome/google-chrome %U\n", 271 "Exec=/opt/google/chrome/google-chrome %U\n",
257 272
258 "#!/usr/bin/env xdg-open\n" 273 "#!/usr/bin/env xdg-open\n"
274 "[Desktop Entry]\n"
259 "Name=http://evil.com/evil%20--join-the-b0tnet\n" 275 "Name=http://evil.com/evil%20--join-the-b0tnet\n"
260 "Exec=/opt/google/chrome/google-chrome " 276 "Exec=/opt/google/chrome/google-chrome "
261 "--app=http://evil.com/evil%20--join-the-b0tnet\n" 277 "--app=http://evil.com/evil%20--join-the-b0tnet\n"
278 "Icon=chrome-http__evil.com_evil\n"
262 "StartupWMClass=evil.com__evil%20--join-the-b0tnet\n" 279 "StartupWMClass=evil.com__evil%20--join-the-b0tnet\n"
263 }, 280 },
264 { "http://evil.com/evil; rm -rf /; \"; rm -rf $HOME >ownz0red", 281 { "http://evil.com/evil; rm -rf /; \"; rm -rf $HOME >ownz0red",
265 "Innocent Title", 282 "Innocent Title",
266 "chrome-http__evil.com_evil", 283 "chrome-http__evil.com_evil",
267 284
285 "[Desktop Entry]\n"
268 "Name=Google Chrome\n" 286 "Name=Google Chrome\n"
269 "Exec=/opt/google/chrome/google-chrome %U\n", 287 "Exec=/opt/google/chrome/google-chrome %U\n",
270 288
271 "#!/usr/bin/env xdg-open\n" 289 "#!/usr/bin/env xdg-open\n"
290 "[Desktop Entry]\n"
272 "Name=Innocent Title\n" 291 "Name=Innocent Title\n"
273 "Exec=/opt/google/chrome/google-chrome " 292 "Exec=/opt/google/chrome/google-chrome "
274 "\"--app=http://evil.com/evil;%20rm%20-rf%20/;%20%22;%20rm%20" 293 "\"--app=http://evil.com/evil;%20rm%20-rf%20/;%20%22;%20rm%20"
275 // Note: $ is escaped as \$ within an arg to Exec, and then 294 // Note: $ is escaped as \$ within an arg to Exec, and then
276 // the \ is escaped as \\ as all strings in a Desktop file should 295 // the \ is escaped as \\ as all strings in a Desktop file should
277 // be; finally, \\ becomes \\\\ when represented in a C++ string! 296 // be; finally, \\ becomes \\\\ when represented in a C++ string!
278 "-rf%20\\\\$HOME%20%3Eownz0red\"\n" 297 "-rf%20\\\\$HOME%20%3Eownz0red\"\n"
298 "Icon=chrome-http__evil.com_evil\n"
279 "StartupWMClass=evil.com__evil;%20rm%20-rf%20_;%20%22;%20" 299 "StartupWMClass=evil.com__evil;%20rm%20-rf%20_;%20%22;%20"
280 "rm%20-rf%20$HOME%20%3Eownz0red\n" 300 "rm%20-rf%20$HOME%20%3Eownz0red\n"
281 }, 301 },
282 { "http://evil.com/evil | cat `echo ownz0red` >/dev/null", 302 { "http://evil.com/evil | cat `echo ownz0red` >/dev/null",
283 "Innocent Title", 303 "Innocent Title",
284 "chrome-http__evil.com_evil", 304 "chrome-http__evil.com_evil",
285 305
306 "[Desktop Entry]\n"
286 "Name=Google Chrome\n" 307 "Name=Google Chrome\n"
287 "Exec=/opt/google/chrome/google-chrome %U\n", 308 "Exec=/opt/google/chrome/google-chrome %U\n",
288 309
289 "#!/usr/bin/env xdg-open\n" 310 "#!/usr/bin/env xdg-open\n"
311 "[Desktop Entry]\n"
290 "Name=Innocent Title\n" 312 "Name=Innocent Title\n"
291 "Exec=/opt/google/chrome/google-chrome " 313 "Exec=/opt/google/chrome/google-chrome "
292 "--app=http://evil.com/evil%20%7C%20cat%20%60echo%20ownz0red" 314 "--app=http://evil.com/evil%20%7C%20cat%20%60echo%20ownz0red"
293 "%60%20%3E/dev/null\n" 315 "%60%20%3E/dev/null\n"
316 "Icon=chrome-http__evil.com_evil\n"
294 "StartupWMClass=evil.com__evil%20%7C%20cat%20%60echo%20ownz0red" 317 "StartupWMClass=evil.com__evil%20%7C%20cat%20%60echo%20ownz0red"
295 "%60%20%3E_dev_null\n" 318 "%60%20%3E_dev_null\n"
296 }, 319 },
297 }; 320 };
298 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); i++) { 321 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); i++) {
299 SCOPED_TRACE(i); 322 SCOPED_TRACE(i);
300 EXPECT_EQ( 323 EXPECT_EQ(
301 test_cases[i].expected_output, 324 test_cases[i].expected_output,
302 ShellIntegration::GetDesktopFileContents( 325 ShellIntegration::GetDesktopFileContents(
303 test_cases[i].template_contents, 326 test_cases[i].template_contents,
(...skipping 22 matching lines...) Expand all
326 // Non-default profile path should get chrome::kBrowserAppID joined with 349 // Non-default profile path should get chrome::kBrowserAppID joined with
327 // profile info. 350 // profile info.
328 FilePath profile_path(FILE_PATH_LITERAL("root")); 351 FilePath profile_path(FILE_PATH_LITERAL("root"));
329 profile_path = profile_path.Append(FILE_PATH_LITERAL("udd")); 352 profile_path = profile_path.Append(FILE_PATH_LITERAL("udd"));
330 profile_path = profile_path.Append(FILE_PATH_LITERAL("User Data - Test")); 353 profile_path = profile_path.Append(FILE_PATH_LITERAL("User Data - Test"));
331 EXPECT_EQ(BrowserDistribution::GetDistribution()->GetBrowserAppId() + 354 EXPECT_EQ(BrowserDistribution::GetDistribution()->GetBrowserAppId() +
332 L".udd.UserDataTest", 355 L".udd.UserDataTest",
333 ShellIntegration::GetChromiumAppId(profile_path)); 356 ShellIntegration::GetChromiumAppId(profile_path));
334 } 357 }
335 #endif 358 #endif
OLDNEW
« chrome/browser/shell_integration_linux.cc ('K') | « chrome/browser/shell_integration_linux.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698