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

Unified Diff: chrome/browser/download_manager_unittest.cc

Issue 2826: Move the download code to new directories: (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/download_manager.cc ('k') | chrome/browser/download_tab_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/download_manager_unittest.cc
===================================================================
--- chrome/browser/download_manager_unittest.cc (revision 2162)
+++ chrome/browser/download_manager_unittest.cc (working copy)
@@ -1,320 +0,0 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <string>
-
-#include "base/logging.h"
-#include "chrome/browser/download_manager.h"
-#include "chrome/browser/download_util.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-class DownloadManagerTest : public testing::Test {
- public:
- DownloadManagerTest() {
- download_manager_ = new DownloadManager();
- download_util::InitializeExeTypes(&download_manager_->exe_types_);
- }
-
- void GetGeneratedFilename(const std::string& content_disposition,
- const std::wstring& url,
- const std::string& mime_type,
- std::wstring* generated_name) {
- DownloadCreateInfo info;
- info.content_disposition = content_disposition;
- info.url = url;
- info.mime_type = mime_type;
- download_manager_->GenerateFilename(&info, generated_name);
- }
-
- protected:
- scoped_refptr<DownloadManager> download_manager_;
- MessageLoopForUI message_loop_;
-
- DISALLOW_EVIL_CONSTRUCTORS(DownloadManagerTest);
-};
-
-static const struct {
- const char* disposition;
- const wchar_t* url;
- const char* mime_type;
- const wchar_t* expected_name;
-} kGeneratedFiles[] = {
- // No 'filename' keyword in the disposition, use the URL
- {"a_file_name.txt",
- L"http://www.evil.com/my_download.txt",
- "text/plain",
- L"my_download.txt"},
-
- // Disposition has relative paths, remove them
- {"filename=../../../../././../a_file_name.txt",
- L"http://www.evil.com/my_download.txt",
- "text/plain",
- L"a_file_name.txt"},
-
- // Disposition has parent directories, remove them
- {"filename=dir1/dir2/a_file_name.txt",
- L"http://www.evil.com/my_download.txt",
- "text/plain",
- L"a_file_name.txt"},
-
- // No useful information in disposition or URL, use default
- {"", L"http://www.truncated.com/path/", "text/plain", L"download.txt"},
-
- // Spaces in the disposition file name
- {"filename=My Downloaded File.exe",
- L"http://www.frontpagehacker.com/a_download.exe",
- "application/octet-stream",
- L"My Downloaded File.exe"},
-
- {"filename=my-cat",
- L"http://www.example.com/my-cat",
- "image/jpeg",
- L"my-cat.jpg"},
-
- {"filename=my-cat",
- L"http://www.example.com/my-cat",
- "text/plain",
- L"my-cat.txt"},
-
- {"filename=my-cat",
- L"http://www.example.com/my-cat",
- "text/html",
- L"my-cat.htm"},
-
- {"filename=my-cat",
- L"http://www.example.com/my-cat",
- "dance/party",
- L"my-cat"},
-
- {"filename=my-cat.jpg",
- L"http://www.example.com/my-cat.jpg",
- "text/plain",
- L"my-cat.jpg"},
-
- {"filename=evil.exe",
- L"http://www.goodguy.com/evil.exe",
- "image/jpeg",
- L"evil.jpg"},
-
- {"filename=evil.exe.exe",
- L"http://www.goodguy.com/evil.exe.exe",
- "dance/party",
- L"evil.exe.download"},
-
- {"filename=evil.exe",
- L"http://www.goodguy.com/evil.exe",
- "application/xml",
- L"evil.xml"},
-
- {"filename=evil.exe",
- L"http://www.goodguy.com/evil.exe",
- "application/html+xml",
- L"evil.download"},
-
- {"filename=evil.exe",
- L"http://www.goodguy.com/evil.exe",
- "application/rss+xml",
- L"evil.download"},
-
- {"filename=utils.js",
- L"http://www.goodguy.com/utils.js",
- "application/x-javascript",
- L"utils.js"},
-
- {"filename=contacts.js",
- L"http://www.goodguy.com/contacts.js",
- "application/json",
- L"contacts.js"},
-
- {"filename=utils.js",
- L"http://www.goodguy.com/utils.js",
- "text/javascript",
- L"utils.js"},
-
- {"filename=utils.js",
- L"http://www.goodguy.com/utils.js",
- "text/javascript;version=2",
- L"utils.js"},
-
- {"filename=utils.js",
- L"http://www.goodguy.com/utils.js",
- "application/ecmascript",
- L"utils.js"},
-
- {"filename=utils.js",
- L"http://www.goodguy.com/utils.js",
- "application/ecmascript;version=4",
- L"utils.js"},
-
- {"filename=program.exe",
- L"http://www.goodguy.com/program.exe",
- "application/foo-bar",
- L"program.exe"},
-
- {"filename=../foo.txt",
- L"http://www.evil.com/../foo.txt",
- "text/plain",
- L"foo.txt"},
-
- {"filename=..\\foo.txt",
- L"http://www.evil.com/..\\foo.txt",
- "text/plain",
- L"foo.txt"},
-
- {"filename=.hidden",
- L"http://www.evil.com/.hidden",
- "text/plain",
- L"hidden.txt"},
-
- {"filename=trailing.",
- L"http://www.evil.com/trailing.",
- "dance/party",
- L"trailing"},
-
- {"filename=trailing.",
- L"http://www.evil.com/trailing.",
- "text/plain",
- L"trailing.txt"},
-
- {"filename=.",
- L"http://www.evil.com/.",
- "dance/party",
- L"download"},
-
- {"filename=..",
- L"http://www.evil.com/..",
- "dance/party",
- L"download"},
-
- {"filename=...",
- L"http://www.evil.com/...",
- "dance/party",
- L"download"},
-
- {"a_file_name.txt",
- L"http://www.evil.com/",
- "image/jpeg",
- L"download.jpg"},
-
- {"filename=",
- L"http://www.evil.com/",
- "image/jpeg",
- L"download.jpg"},
-
- {"filename=simple",
- L"http://www.example.com/simple",
- "application/octet-stream",
- L"simple"},
-
- {"filename=COM1",
- L"http://www.goodguy.com/COM1",
- "application/foo-bar",
- L"_COM1"},
-
- {"filename=COM4.txt",
- L"http://www.goodguy.com/COM4.txt",
- "text/plain",
- L"_COM4.txt"},
-
- {"filename=lpt1.TXT",
- L"http://www.goodguy.com/lpt1.TXT",
- "text/plain",
- L"_lpt1.TXT"},
-
- {"filename=clock$.txt",
- L"http://www.goodguy.com/clock$.txt",
- "text/plain",
- L"_clock$.txt"},
-
- {"filename=mycom1.foo",
- L"http://www.goodguy.com/mycom1.foo",
- "text/plain",
- L"mycom1.foo"},
-
- {"filename=Setup.exe.local",
- L"http://www.badguy.com/Setup.exe.local",
- "application/foo-bar",
- L"Setup.exe.download"},
-
- {"filename=Setup.exe.local.local",
- L"http://www.badguy.com/Setup.exe.local",
- "application/foo-bar",
- L"Setup.exe.local.download"},
-
- {"filename=Setup.exe.lnk",
- L"http://www.badguy.com/Setup.exe.lnk",
- "application/foo-bar",
- L"Setup.exe.download"},
-
- {"filename=Desktop.ini",
- L"http://www.badguy.com/Desktop.ini",
- "application/foo-bar",
- L"_Desktop.ini"},
-
- {"filename=Thumbs.db",
- L"http://www.badguy.com/Thumbs.db",
- "application/foo-bar",
- L"_Thumbs.db"},
-
- {"filename=source.srf",
- L"http://www.hotmail.com",
- "image/jpeg",
- L"source.srf.jpg"},
-
- {"filename=source.jpg",
- L"http://www.hotmail.com",
- "application/x-javascript",
- L"source.jpg"},
-
- // NetUtilTest.{GetSuggestedFilename, GetFileNameFromCD} test these
- // more thoroughly. Tested below are a small set of samples.
- {"attachment; filename=\"%EC%98%88%EC%88%A0%20%EC%98%88%EC%88%A0.jpg\"",
- L"http://www.examples.com/",
- "image/jpeg",
- L"\uc608\uc220 \uc608\uc220.jpg"},
-
- {"attachment; name=abc de.pdf",
- L"http://www.examples.com/q.cgi?id=abc",
- "application/octet-stream",
- L"abc de.pdf"},
-
- {"filename=\"=?EUC-JP?Q?=B7=DD=BD=D13=2Epng?=\"",
- L"http://www.example.com/path",
- "image/png",
- L"\x82b8\x8853" L"3.png"},
-
- // The following two have invalid CD headers and filenames come
- // from the URL.
- {"attachment; filename==?iiso88591?Q?caf=EG?=",
- L"http://www.example.com/test%20123",
- "image/jpeg",
- L"test 123.jpg"},
-
- {"malformed_disposition",
- L"http://www.google.com/%EC%98%88%EC%88%A0%20%EC%98%88%EC%88%A0.jpg",
- "image/jpeg",
- L"\uc608\uc220 \uc608\uc220.jpg"},
-
- // Invalid C-D. No filename from URL. Falls back to 'download'.
- {"attachment; filename==?iso88591?Q?caf=E3?",
- L"http://www.google.com/path1/path2/",
- "image/jpeg",
- L"download.jpg"},
-
- // TODO(darin): Add some raw 8-bit Content-Disposition tests.
-};
-
-// Tests to ensure that the file names we generate from hints from the server
-// (content-disposition, URL name, etc) don't cause security holes.
-TEST_F(DownloadManagerTest, TestDownloadFilename) {
- for (int i = 0; i < arraysize(kGeneratedFiles); ++i) {
- std::wstring file_name;
- GetGeneratedFilename(kGeneratedFiles[i].disposition,
- kGeneratedFiles[i].url,
- kGeneratedFiles[i].mime_type,
- &file_name);
- EXPECT_EQ(kGeneratedFiles[i].expected_name, file_name);
- }
-}
-
« no previous file with comments | « chrome/browser/download_manager.cc ('k') | chrome/browser/download_tab_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698