| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
| 6 | 6 |
| 7 #include "base/stl_util-inl.h" | 7 #include "base/stl_util-inl.h" |
| 8 #include "base/thread.h" | 8 #include "base/thread.h" |
| 9 #include "base/waitable_event.h" | 9 #include "base/waitable_event.h" |
| 10 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 kDocRoot, io_thread_->message_loop()).release(); | 366 kDocRoot, io_thread_->message_loop()).release(); |
| 367 ASSERT_TRUE(http_server_); | 367 ASSERT_TRUE(http_server_); |
| 368 request_context_ = new TestURLRequestContext(); | 368 request_context_ = new TestURLRequestContext(); |
| 369 request_context_->AddRef(); | 369 request_context_->AddRef(); |
| 370 } | 370 } |
| 371 | 371 |
| 372 static base::WaitableEvent* io_thread_shutdown_event_; | 372 static base::WaitableEvent* io_thread_shutdown_event_; |
| 373 | 373 |
| 374 // Cleanup function; must be called on the IO Thread. | 374 // Cleanup function; must be called on the IO Thread. |
| 375 static void CleanupIOThread() { | 375 static void CleanupIOThread() { |
| 376 http_server_->Release(); | 376 if (http_server_) { |
| 377 http_server_ = NULL; | 377 http_server_->Release(); |
| 378 request_context_->Release(); | 378 http_server_ = NULL; |
| 379 request_context_ = NULL; | 379 } |
| 380 if (request_context_) { |
| 381 request_context_->Release(); |
| 382 request_context_ = NULL; |
| 383 } |
| 380 io_thread_shutdown_event_->Signal(); | 384 io_thread_shutdown_event_->Signal(); |
| 381 } | 385 } |
| 382 | 386 |
| 383 static void TearDownTestCase() { | 387 static void TearDownTestCase() { |
| 384 io_thread_shutdown_event_ = new base::WaitableEvent(false, false); | 388 io_thread_shutdown_event_ = new base::WaitableEvent(false, false); |
| 385 io_thread_->message_loop()->PostTask(FROM_HERE, | 389 io_thread_->message_loop()->PostTask(FROM_HERE, |
| 386 NewRunnableFunction(CleanupIOThread)); | 390 NewRunnableFunction(CleanupIOThread)); |
| 387 io_thread_shutdown_event_->Wait(); | 391 io_thread_shutdown_event_->Wait(); |
| 388 delete io_thread_shutdown_event_; | 392 delete io_thread_shutdown_event_; |
| 389 delete io_thread_; | 393 delete io_thread_; |
| 390 io_thread_ = NULL; | 394 io_thread_ = NULL; |
| 391 } | 395 } |
| 392 | 396 |
| 393 // Use a separate IO thread to run a test. Thread will be destroyed | 397 // Use a separate IO thread to run a test. Thread will be destroyed |
| 394 // when it goes out of scope. | 398 // when it goes out of scope. |
| 395 template <class Method> | 399 template <class Method> |
| 396 void RunTestOnIOThread(Method method) { | 400 void RunTestOnIOThread(Method method) { |
| 401 EXPECT_TRUE(http_server_); |
| 402 if (!http_server_) |
| 403 return; // Don't even try to run any of these tests w/o the server. |
| 404 |
| 397 event_.reset(new base::WaitableEvent(false, false)); | 405 event_.reset(new base::WaitableEvent(false, false)); |
| 398 io_thread_->message_loop()->PostTask( | 406 io_thread_->message_loop()->PostTask( |
| 399 FROM_HERE, NewRunnableMethod(this, method)); | 407 FROM_HERE, NewRunnableMethod(this, method)); |
| 400 | 408 |
| 401 // Wait until task is done before exiting the test. | 409 // Wait until task is done before exiting the test. |
| 402 event_->Wait(); | 410 event_->Wait(); |
| 403 } | 411 } |
| 404 | 412 |
| 405 void StartCacheAttemptTest() { | 413 void StartCacheAttemptTest() { |
| 406 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); | 414 ASSERT_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()); |
| (...skipping 2624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3031 } | 3039 } |
| 3032 | 3040 |
| 3033 TEST_F(AppCacheUpdateJobTest, UpgradeFetchManifestFail) { | 3041 TEST_F(AppCacheUpdateJobTest, UpgradeFetchManifestFail) { |
| 3034 RunTestOnIOThread(&AppCacheUpdateJobTest::UpgradeFetchManifestFailTest); | 3042 RunTestOnIOThread(&AppCacheUpdateJobTest::UpgradeFetchManifestFailTest); |
| 3035 } | 3043 } |
| 3036 | 3044 |
| 3037 TEST_F(AppCacheUpdateJobTest, ManifestRedirect) { | 3045 TEST_F(AppCacheUpdateJobTest, ManifestRedirect) { |
| 3038 RunTestOnIOThread(&AppCacheUpdateJobTest::ManifestRedirectTest); | 3046 RunTestOnIOThread(&AppCacheUpdateJobTest::ManifestRedirectTest); |
| 3039 } | 3047 } |
| 3040 | 3048 |
| 3041 #if defined(OS_MACOSX) | 3049 TEST_F(AppCacheUpdateJobTest, ManifestWrongMimeType) { |
| 3042 // Crashing on mac webkit bots. http://crbug.com/45664 | |
| 3043 #define MAYBE_ManifestWrongMimeType DISABLED_ManifestWrongMimeType | |
| 3044 #else | |
| 3045 #define MAYBE_ManifestWrongMimeType ManifestWrongMimeType | |
| 3046 #endif | |
| 3047 | |
| 3048 TEST_F(AppCacheUpdateJobTest, MAYBE_ManifestWrongMimeType) { | |
| 3049 RunTestOnIOThread(&AppCacheUpdateJobTest::ManifestWrongMimeTypeTest); | 3050 RunTestOnIOThread(&AppCacheUpdateJobTest::ManifestWrongMimeTypeTest); |
| 3050 } | 3051 } |
| 3051 | 3052 |
| 3052 TEST_F(AppCacheUpdateJobTest, ManifestNotFound) { | 3053 TEST_F(AppCacheUpdateJobTest, ManifestNotFound) { |
| 3053 RunTestOnIOThread(&AppCacheUpdateJobTest::ManifestNotFoundTest); | 3054 RunTestOnIOThread(&AppCacheUpdateJobTest::ManifestNotFoundTest); |
| 3054 } | 3055 } |
| 3055 | 3056 |
| 3056 TEST_F(AppCacheUpdateJobTest, ManifestGone) { | 3057 TEST_F(AppCacheUpdateJobTest, ManifestGone) { |
| 3057 RunTestOnIOThread(&AppCacheUpdateJobTest::ManifestGoneTest); | 3058 RunTestOnIOThread(&AppCacheUpdateJobTest::ManifestGoneTest); |
| 3058 } | 3059 } |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3230 struct RunnableMethodTraits<appcache::AppCacheUpdateJobTest> { | 3231 struct RunnableMethodTraits<appcache::AppCacheUpdateJobTest> { |
| 3231 void RetainCallee(appcache::AppCacheUpdateJobTest* obj) { } | 3232 void RetainCallee(appcache::AppCacheUpdateJobTest* obj) { } |
| 3232 void ReleaseCallee(appcache::AppCacheUpdateJobTest* obj) { } | 3233 void ReleaseCallee(appcache::AppCacheUpdateJobTest* obj) { } |
| 3233 }; | 3234 }; |
| 3234 template<> | 3235 template<> |
| 3235 struct RunnableMethodTraits<appcache::AppCacheUpdateJobTest::MockAppCachePolicy> | 3236 struct RunnableMethodTraits<appcache::AppCacheUpdateJobTest::MockAppCachePolicy> |
| 3236 { | 3237 { |
| 3237 void RetainCallee(appcache::AppCacheUpdateJobTest::MockAppCachePolicy* o) { } | 3238 void RetainCallee(appcache::AppCacheUpdateJobTest::MockAppCachePolicy* o) { } |
| 3238 void ReleaseCallee(appcache::AppCacheUpdateJobTest::MockAppCachePolicy* o) { } | 3239 void ReleaseCallee(appcache::AppCacheUpdateJobTest::MockAppCachePolicy* o) { } |
| 3239 }; | 3240 }; |
| OLD | NEW |