| OLD | NEW | 
|---|
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 #if defined(OS_LINUX) | 5 #include "webkit/glue/resource_fetcher.h" | 
| 6 #include <gtk/gtk.h> |  | 
| 7 #endif |  | 
| 8 | 6 | 
| 9 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" | 7 #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" | 
| 10 #include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h" | 8 #include "third_party/WebKit/WebKit/chromium/public/WebURLResponse.h" | 
| 11 #include "third_party/WebKit/WebKit/chromium/public/WebView.h" | 9 #include "third_party/WebKit/WebKit/chromium/public/WebView.h" | 
| 12 #include "webkit/glue/unittest_test_server.h" | 10 #include "webkit/glue/unittest_test_server.h" | 
| 13 #include "webkit/glue/resource_fetcher.h" |  | 
| 14 #include "webkit/tools/test_shell/simple_resource_loader_bridge.h" | 11 #include "webkit/tools/test_shell/simple_resource_loader_bridge.h" | 
| 15 #include "webkit/tools/test_shell/test_shell_test.h" | 12 #include "webkit/tools/test_shell/test_shell_test.h" | 
| 16 | 13 | 
|  | 14 #if defined(TOOLKIT_USES_GTK) | 
|  | 15 #include <gtk/gtk.h> | 
|  | 16 #endif | 
|  | 17 | 
| 17 using WebKit::WebFrame; | 18 using WebKit::WebFrame; | 
| 18 using WebKit::WebURLResponse; | 19 using WebKit::WebURLResponse; | 
| 19 using webkit_glue::ResourceFetcher; | 20 using webkit_glue::ResourceFetcher; | 
| 20 using webkit_glue::ResourceFetcherWithTimeout; | 21 using webkit_glue::ResourceFetcherWithTimeout; | 
| 21 | 22 | 
| 22 namespace { | 23 namespace { | 
| 23 | 24 | 
| 24 class ResourceFetcherTests : public TestShellTest { | 25 class ResourceFetcherTests : public TestShellTest { | 
| 25  public: | 26  public: | 
| 26   void SetUp() { | 27   void SetUp() { | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 69   // MessageLoop's Quit method. | 70   // MessageLoop's Quit method. | 
| 70   void WaitForResponse() { | 71   void WaitForResponse() { | 
| 71     while (!completed() && !timed_out()) | 72     while (!completed() && !timed_out()) | 
| 72       MessageLoop::current()->Run(); | 73       MessageLoop::current()->Run(); | 
| 73   } | 74   } | 
| 74 | 75 | 
| 75   void CreateTimer(int interval) { | 76   void CreateTimer(int interval) { | 
| 76 #if defined(OS_WIN) | 77 #if defined(OS_WIN) | 
| 77     timer_id_ = ::SetTimer(NULL, NULL, interval, | 78     timer_id_ = ::SetTimer(NULL, NULL, interval, | 
| 78                            &FetcherDelegate::TimerCallback); | 79                            &FetcherDelegate::TimerCallback); | 
| 79 #elif defined(OS_LINUX) | 80 #elif defined(TOOLKIT_USES_GTK) | 
| 80     timer_id_ = g_timeout_add(interval, &FetcherDelegate::TimerCallback, NULL); | 81     timer_id_ = g_timeout_add(interval, &FetcherDelegate::TimerCallback, NULL); | 
| 81 #elif defined(OS_MACOSX) | 82 #elif defined(OS_MACOSX) | 
| 82     // CFAbsoluteTime is in seconds and |interval| is in ms, so make sure we | 83     // CFAbsoluteTime is in seconds and |interval| is in ms, so make sure we | 
| 83     // keep the units correct. | 84     // keep the units correct. | 
| 84     CFTimeInterval interval_in_seconds = static_cast<double>(interval) / 1000.0; | 85     CFTimeInterval interval_in_seconds = static_cast<double>(interval) / 1000.0; | 
| 85     CFAbsoluteTime fire_date = | 86     CFAbsoluteTime fire_date = | 
| 86         CFAbsoluteTimeGetCurrent() + interval_in_seconds; | 87         CFAbsoluteTimeGetCurrent() + interval_in_seconds; | 
| 87     timer_id_ = CFRunLoopTimerCreate(NULL, fire_date, interval_in_seconds, 0, | 88     timer_id_ = CFRunLoopTimerCreate(NULL, fire_date, interval_in_seconds, 0, | 
| 88                                      0, FetcherDelegate::TimerCallback, NULL); | 89                                      0, FetcherDelegate::TimerCallback, NULL); | 
| 89     CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer_id_, kCFRunLoopCommonModes); | 90     CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer_id_, kCFRunLoopCommonModes); | 
| 90 #endif | 91 #endif | 
| 91   } | 92   } | 
| 92 | 93 | 
| 93   void DestroyTimer() { | 94   void DestroyTimer() { | 
| 94 #if defined(OS_WIN) | 95 #if defined(OS_WIN) | 
| 95     ::KillTimer(NULL, timer_id_); | 96     ::KillTimer(NULL, timer_id_); | 
| 96 #elif defined(OS_LINUX) | 97 #elif defined(TOOLKIT_USES_GTK) | 
| 97     g_source_remove(timer_id_); | 98     g_source_remove(timer_id_); | 
| 98 #elif defined(OS_MACOSX) | 99 #elif defined(OS_MACOSX) | 
| 99     CFRunLoopRemoveTimer(CFRunLoopGetCurrent(), timer_id_, | 100     CFRunLoopRemoveTimer(CFRunLoopGetCurrent(), timer_id_, | 
| 100                          kCFRunLoopCommonModes); | 101                          kCFRunLoopCommonModes); | 
| 101     CFRelease(timer_id_); | 102     CFRelease(timer_id_); | 
| 102 #endif | 103 #endif | 
| 103   } | 104   } | 
| 104 | 105 | 
| 105 #if defined(OS_WIN) | 106 #if defined(OS_WIN) | 
| 106   // Static timer callback, just passes through to instance version. | 107   // Static timer callback, just passes through to instance version. | 
| 107   static VOID CALLBACK TimerCallback(HWND hwnd, UINT msg, UINT_PTR timer_id, | 108   static VOID CALLBACK TimerCallback(HWND hwnd, UINT msg, UINT_PTR timer_id, | 
| 108                                      DWORD ms) { | 109                                      DWORD ms) { | 
| 109     instance_->TimerFired(); | 110     instance_->TimerFired(); | 
| 110   } | 111   } | 
| 111 #elif defined(OS_LINUX) | 112 #elif defined(TOOLKIT_USES_GTK) | 
| 112   static gboolean TimerCallback(gpointer data) { | 113   static gboolean TimerCallback(gpointer data) { | 
| 113     instance_->TimerFired(); | 114     instance_->TimerFired(); | 
| 114     return true; | 115     return true; | 
| 115   } | 116   } | 
| 116 #elif defined(OS_MACOSX) | 117 #elif defined(OS_MACOSX) | 
| 117   static void TimerCallback(CFRunLoopTimerRef timer, void* info) { | 118   static void TimerCallback(CFRunLoopTimerRef timer, void* info) { | 
| 118     instance_->TimerFired(); | 119     instance_->TimerFired(); | 
| 119   } | 120   } | 
| 120 #endif | 121 #endif | 
| 121 | 122 | 
| 122   void TimerFired() { | 123   void TimerFired() { | 
| 123     ASSERT_FALSE(completed_); | 124     ASSERT_FALSE(completed_); | 
| 124 | 125 | 
| 125     if (timed_out()) { | 126     if (timed_out()) { | 
| 126       DestroyTimer(); | 127       DestroyTimer(); | 
| 127       MessageLoop::current()->Quit(); | 128       MessageLoop::current()->Quit(); | 
| 128       FAIL() << "fetch timed out"; | 129       FAIL() << "fetch timed out"; | 
| 129       return; | 130       return; | 
| 130     } | 131     } | 
| 131 | 132 | 
| 132     time_elapsed_ms_ += kWaitIntervalMs; | 133     time_elapsed_ms_ += kWaitIntervalMs; | 
| 133   } | 134   } | 
| 134 | 135 | 
| 135   static FetcherDelegate* instance_; | 136   static FetcherDelegate* instance_; | 
| 136 | 137 | 
| 137  private: | 138  private: | 
| 138 #if defined(OS_WIN) | 139 #if defined(OS_WIN) | 
| 139   UINT_PTR timer_id_; | 140   UINT_PTR timer_id_; | 
| 140 #elif defined(OS_LINUX) | 141 #elif defined(TOOLKIT_USES_GTK) | 
| 141   guint timer_id_; | 142   guint timer_id_; | 
| 142 #elif defined(OS_MACOSX) | 143 #elif defined(OS_MACOSX) | 
| 143   CFRunLoopTimerRef timer_id_; | 144   CFRunLoopTimerRef timer_id_; | 
| 144 #endif | 145 #endif | 
| 145   bool completed_; | 146   bool completed_; | 
| 146   int time_elapsed_ms_; | 147   int time_elapsed_ms_; | 
| 147   WebURLResponse response_; | 148   WebURLResponse response_; | 
| 148   std::string data_; | 149   std::string data_; | 
| 149 }; | 150 }; | 
| 150 | 151 | 
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 223 | 224 | 
| 224   // When we timeout, we still call the Delegate callback but we pass in empty | 225   // When we timeout, we still call the Delegate callback but we pass in empty | 
| 225   // values. | 226   // values. | 
| 226   EXPECT_TRUE(delegate->completed()); | 227   EXPECT_TRUE(delegate->completed()); | 
| 227   EXPECT_TRUE(delegate->response().isNull()); | 228   EXPECT_TRUE(delegate->response().isNull()); | 
| 228   EXPECT_EQ(delegate->data(), std::string()); | 229   EXPECT_EQ(delegate->data(), std::string()); | 
| 229   EXPECT_TRUE(delegate->time_elapsed_ms() < kMaxWaitTimeMs); | 230   EXPECT_TRUE(delegate->time_elapsed_ms() < kMaxWaitTimeMs); | 
| 230 } | 231 } | 
| 231 | 232 | 
| 232 }  // namespace | 233 }  // namespace | 
| OLD | NEW | 
|---|