| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this |
| 2 // source code is governed by a BSD-style license that can be found in the | 2 // source code is governed by a BSD-style license that can be found in the |
| 3 // LICENSE file. | 3 // LICENSE file. |
| 4 | 4 |
| 5 #include <math.h> |
| 5 #include "config.h" | 6 #include "config.h" |
| 6 | 7 |
| 7 #include "FrameView.h" | 8 #include "FrameView.h" |
| 8 #include "ScrollView.h" | 9 #include "ScrollView.h" |
| 9 #include <wtf/Assertions.h> | 10 #include <wtf/Assertions.h> |
| 10 #undef LOG | 11 #undef LOG |
| 11 | 12 |
| 12 #include "webkit/glue/webkitclient_impl.h" | 13 #include "webkit/glue/webkitclient_impl.h" |
| 13 | 14 |
| 14 #include "base/file_path.h" | 15 #include "base/file_path.h" |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 | 261 |
| 261 double WebKitClientImpl::currentTime() { | 262 double WebKitClientImpl::currentTime() { |
| 262 return base::Time::Now().ToDoubleT(); | 263 return base::Time::Now().ToDoubleT(); |
| 263 } | 264 } |
| 264 | 265 |
| 265 void WebKitClientImpl::setSharedTimerFiredFunction(void (*func)()) { | 266 void WebKitClientImpl::setSharedTimerFiredFunction(void (*func)()) { |
| 266 shared_timer_func_ = func; | 267 shared_timer_func_ = func; |
| 267 } | 268 } |
| 268 | 269 |
| 269 void WebKitClientImpl::setSharedTimerFireTime(double fire_time) { | 270 void WebKitClientImpl::setSharedTimerFireTime(double fire_time) { |
| 270 int interval = static_cast<int>((fire_time - currentTime()) * 1000); | 271 // By converting between double and int64 representation, we run the risk |
| 272 // of losing precision due to rounding errors. Performing computations in |
| 273 // microseconds reduces this risk somewhat. But there still is the potential |
| 274 // of us computing a fire time for the timer that is shorter than what we |
| 275 // need. |
| 276 // As the event loop will check event deadlines prior to actually firing |
| 277 // them, there is a risk of needlessly rescheduling events and of |
| 278 // needlessly looping if sleep times are too short even by small amounts. |
| 279 // This results in measurable performance degradation unless we use ceil() to |
| 280 // always round up the sleep times. |
| 281 int64 interval = static_cast<int64>( |
| 282 ceil((fire_time - currentTime()) * base::Time::kMicrosecondsPerSecond)); |
| 271 if (interval < 0) | 283 if (interval < 0) |
| 272 interval = 0; | 284 interval = 0; |
| 273 | 285 |
| 274 shared_timer_.Stop(); | 286 shared_timer_.Stop(); |
| 275 shared_timer_.Start(base::TimeDelta::FromMilliseconds(interval), this, | 287 shared_timer_.Start(base::TimeDelta::FromMicroseconds(interval), this, |
| 276 &WebKitClientImpl::DoTimeout); | 288 &WebKitClientImpl::DoTimeout); |
| 277 } | 289 } |
| 278 | 290 |
| 279 void WebKitClientImpl::stopSharedTimer() { | 291 void WebKitClientImpl::stopSharedTimer() { |
| 280 shared_timer_.Stop(); | 292 shared_timer_.Stop(); |
| 281 } | 293 } |
| 282 | 294 |
| 283 void WebKitClientImpl::callOnMainThread(void (*func)()) { | 295 void WebKitClientImpl::callOnMainThread(void (*func)()) { |
| 284 main_loop_->PostTask(FROM_HERE, NewRunnableFunction(func)); | 296 main_loop_->PostTask(FROM_HERE, NewRunnableFunction(func)); |
| 285 } | 297 } |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 494 return file_util::DirectoryExists(file_path); | 506 return file_util::DirectoryExists(file_path); |
| 495 } | 507 } |
| 496 | 508 |
| 497 WebKit::WebURL WebKitClientImpl::filePathToURL(const WebKit::WebString& path) { | 509 WebKit::WebURL WebKitClientImpl::filePathToURL(const WebKit::WebString& path) { |
| 498 FilePath file_path(webkit_glue::WebStringToFilePathString(path)); | 510 FilePath file_path(webkit_glue::WebStringToFilePathString(path)); |
| 499 GURL file_url = net::FilePathToFileURL(file_path); | 511 GURL file_url = net::FilePathToFileURL(file_path); |
| 500 return webkit_glue::KURLToWebURL(webkit_glue::GURLToKURL(file_url)); | 512 return webkit_glue::KURLToWebURL(webkit_glue::GURLToKURL(file_url)); |
| 501 } | 513 } |
| 502 | 514 |
| 503 } // namespace webkit_glue | 515 } // namespace webkit_glue |
| OLD | NEW |