Index: trunk/src/content/browser/indexed_db/indexed_db_browsertest.cc |
=================================================================== |
--- trunk/src/content/browser/indexed_db/indexed_db_browsertest.cc (revision 260206) |
+++ trunk/src/content/browser/indexed_db/indexed_db_browsertest.cc (working copy) |
@@ -5,7 +5,6 @@ |
#include "base/bind.h" |
#include "base/command_line.h" |
#include "base/file_util.h" |
-#include "base/files/file_enumerator.h" |
#include "base/files/file_path.h" |
#include "base/memory/ref_counted.h" |
#include "base/message_loop/message_loop.h" |
@@ -25,10 +24,6 @@ |
#include "content/public/test/content_browser_test.h" |
#include "content/public/test/content_browser_test_utils.h" |
#include "content/shell/browser/shell.h" |
-#include "net/base/net_errors.h" |
-#include "net/test/embedded_test_server/embedded_test_server.h" |
-#include "net/test/embedded_test_server/http_request.h" |
-#include "net/test/embedded_test_server/http_response.h" |
#include "webkit/browser/database/database_util.h" |
#include "webkit/browser/quota/quota_manager.h" |
@@ -361,134 +356,6 @@ |
SimpleTest(GetTestUrl("indexeddb", "delete_over_quota.html")); |
} |
-namespace { |
- |
-static void CompactIndexedDBBackingStore( |
- scoped_refptr<IndexedDBContextImpl> context, |
- const GURL& origin_url) { |
- IndexedDBFactory* factory = context->GetIDBFactory(); |
- |
- std::pair<IndexedDBFactory::OriginDBMapIterator, |
- IndexedDBFactory::OriginDBMapIterator> range = |
- factory->GetOpenDatabasesForOrigin(origin_url); |
- |
- if (range.first == range.second) // If no open db's for this origin |
- return; |
- |
- // Compact the first db's backing store since all the db's are in the same |
- // backing store. |
- IndexedDBDatabase* db = range.first->second; |
- IndexedDBBackingStore* backing_store = db->backing_store(); |
- backing_store->Compact(); |
-} |
- |
-static void CorruptIndexedDBDatabase( |
- IndexedDBContextImpl* context, |
- const GURL& origin_url, |
- base::WaitableEvent* signal_when_finished) { |
- |
- CompactIndexedDBBackingStore(context, origin_url); |
- |
- int numFiles = 0; |
- int numErrors = 0; |
- base::FilePath idb_data_path = context->GetFilePath(origin_url); |
- const bool recursive = false; |
- base::FileEnumerator enumerator( |
- idb_data_path, recursive, base::FileEnumerator::FILES); |
- for (base::FilePath idb_file = enumerator.Next(); !idb_file.empty(); |
- idb_file = enumerator.Next()) { |
- int64 size(0); |
- GetFileSize(idb_file, &size); |
- |
- if (idb_file.Extension() == FILE_PATH_LITERAL(".ldb")) { |
- numFiles++; |
- base::ScopedFILE f(base::OpenFile(idb_file, "w")); |
- if (f) { |
- char zero(0); |
- if (size != (int64)fwrite(&zero, sizeof(zero), size, f.get())) |
- numErrors++; |
- } else { |
- numErrors++; |
- } |
- } |
- } |
- |
- VLOG(0) << "There were " << numFiles << " in " << idb_data_path.value() |
- << " with " << numErrors << " errors"; |
- signal_when_finished->Signal(); |
-} |
- |
-const std::string s_corrupt_db_test_prefix = "/corrupt/test/"; |
- |
-static scoped_ptr<net::test_server::HttpResponse> CorruptDBRequestHandler( |
- IndexedDBContextImpl* context, |
- const GURL& origin_url, |
- const std::string& path, |
- const net::test_server::HttpRequest& request) { |
- |
- std::string request_path; |
- if (path.find(s_corrupt_db_test_prefix) != std::string::npos) |
- request_path = request.relative_url.substr(s_corrupt_db_test_prefix.size()); |
- else |
- return scoped_ptr<net::test_server::HttpResponse>(); |
- |
- // Remove the query string if present. |
- std::string request_query; |
- size_t query_pos = request_path.find('?'); |
- if (query_pos != std::string::npos) { |
- request_query = request_path.substr(query_pos + 1); |
- request_path = request_path.substr(0, query_pos); |
- } |
- |
- if (request_path == "corruptdb" && !request_query.empty()) { |
- VLOG(0) << "Requested to corrupt IndexedDB: " << request_query; |
- base::WaitableEvent signal_when_finished(false, false); |
- context->TaskRunner()->PostTask(FROM_HERE, |
- base::Bind(&CorruptIndexedDBDatabase, |
- base::ConstRef(context), |
- origin_url, |
- &signal_when_finished)); |
- signal_when_finished.Wait(); |
- |
- scoped_ptr<net::test_server::BasicHttpResponse> http_response( |
- new net::test_server::BasicHttpResponse); |
- http_response->set_code(net::HTTP_OK); |
- return http_response.PassAs<net::test_server::HttpResponse>(); |
- } |
- |
- // A request for a test resource |
- base::FilePath resourcePath = |
- content::GetTestFilePath("indexeddb", request_path.c_str()); |
- scoped_ptr<net::test_server::BasicHttpResponse> http_response( |
- new net::test_server::BasicHttpResponse); |
- http_response->set_code(net::HTTP_OK); |
- std::string file_contents; |
- if (!base::ReadFileToString(resourcePath, &file_contents)) |
- return scoped_ptr<net::test_server::HttpResponse>(); |
- http_response->set_content(file_contents); |
- return http_response.PassAs<net::test_server::HttpResponse>(); |
-} |
- |
-} // namespace |
- |
-IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, CorruptedOpenDatabase) { |
- ASSERT_TRUE(embedded_test_server()->Started() || |
- embedded_test_server()->InitializeAndWaitUntilReady()); |
- const GURL& origin_url = embedded_test_server()->base_url(); |
- embedded_test_server()->RegisterRequestHandler( |
- base::Bind(&CorruptDBRequestHandler, |
- base::ConstRef(GetContext()), |
- origin_url, |
- s_corrupt_db_test_prefix)); |
- |
- std::string test_file = |
- s_corrupt_db_test_prefix + "corrupted_open_db_detection.html"; |
- SimpleTest(embedded_test_server()->GetURL(test_file)); |
- |
- test_file = s_corrupt_db_test_prefix + "corrupted_open_db_recovery.html"; |
- SimpleTest(embedded_test_server()->GetURL(test_file)); |
-} |
- |
IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DeleteCompactsBackingStore) { |
const GURL test_url = GetTestUrl("indexeddb", "delete_compact.html"); |
SimpleTest(GURL(test_url.spec() + "#fill")); |
@@ -582,7 +449,6 @@ |
base::string16 expected_title16(ASCIIToUTF16("connection closed")); |
TitleWatcher title_watcher(shell()->web_contents(), expected_title16); |
- title_watcher.AlsoWaitForTitle(ASCIIToUTF16("connection closed with error")); |
EXPECT_EQ(expected_title16, title_watcher.WaitAndGetTitle()); |
} |