OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/renderer/extensions/dispatcher.h" | 5 #include "chrome/renderer/extensions/dispatcher.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/debug/alias.h" | 9 #include "base/debug/alias.h" |
10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 IPC_MESSAGE_UNHANDLED(handled = false) | 512 IPC_MESSAGE_UNHANDLED(handled = false) |
513 IPC_END_MESSAGE_MAP() | 513 IPC_END_MESSAGE_MAP() |
514 | 514 |
515 return handled; | 515 return handled; |
516 } | 516 } |
517 | 517 |
518 void Dispatcher::WebKitInitialized() { | 518 void Dispatcher::WebKitInitialized() { |
519 // For extensions, we want to ensure we call the IdleHandler every so often, | 519 // For extensions, we want to ensure we call the IdleHandler every so often, |
520 // even if the extension keeps up activity. | 520 // even if the extension keeps up activity. |
521 if (is_extension_process_) { | 521 if (is_extension_process_) { |
522 forced_idle_timer_.Start(FROM_HERE, | 522 forced_idle_timer_.reset(new base::RepeatingTimer<content::RenderThread>); |
| 523 forced_idle_timer_->Start(FROM_HERE, |
523 base::TimeDelta::FromMilliseconds(kMaxExtensionIdleHandlerDelayMs), | 524 base::TimeDelta::FromMilliseconds(kMaxExtensionIdleHandlerDelayMs), |
524 RenderThread::Get(), &RenderThread::IdleHandler); | 525 RenderThread::Get(), &RenderThread::IdleHandler); |
525 } | 526 } |
526 | 527 |
527 // Initialize host permissions for any extensions that were activated before | 528 // Initialize host permissions for any extensions that were activated before |
528 // WebKit was initialized. | 529 // WebKit was initialized. |
529 for (std::set<std::string>::iterator iter = active_extension_ids_.begin(); | 530 for (std::set<std::string>::iterator iter = active_extension_ids_.begin(); |
530 iter != active_extension_ids_.end(); ++iter) { | 531 iter != active_extension_ids_.end(); ++iter) { |
531 const Extension* extension = extensions_.GetByID(*iter); | 532 const Extension* extension = extensions_.GetByID(*iter); |
532 CHECK(extension); | 533 CHECK(extension); |
533 } | 534 } |
534 | 535 |
535 EnableCustomElementWhiteList(); | 536 EnableCustomElementWhiteList(); |
536 | 537 |
537 is_webkit_initialized_ = true; | 538 is_webkit_initialized_ = true; |
538 } | 539 } |
539 | 540 |
540 void Dispatcher::IdleNotification() { | 541 void Dispatcher::IdleNotification() { |
541 if (is_extension_process_) { | 542 if (is_extension_process_) { |
542 // Dampen the forced delay as well if the extension stays idle for long | 543 // Dampen the forced delay as well if the extension stays idle for long |
543 // periods of time. | 544 // periods of time. |
544 int64 forced_delay_ms = std::max( | 545 int64 forced_delay_ms = std::max( |
545 RenderThread::Get()->GetIdleNotificationDelayInMs(), | 546 RenderThread::Get()->GetIdleNotificationDelayInMs(), |
546 kMaxExtensionIdleHandlerDelayMs); | 547 kMaxExtensionIdleHandlerDelayMs); |
547 forced_idle_timer_.Stop(); | 548 forced_idle_timer_->Stop(); |
548 forced_idle_timer_.Start(FROM_HERE, | 549 forced_idle_timer_->Start(FROM_HERE, |
549 base::TimeDelta::FromMilliseconds(forced_delay_ms), | 550 base::TimeDelta::FromMilliseconds(forced_delay_ms), |
550 RenderThread::Get(), &RenderThread::IdleHandler); | 551 RenderThread::Get(), &RenderThread::IdleHandler); |
551 } | 552 } |
552 } | 553 } |
553 | 554 |
554 void Dispatcher::OnRenderProcessShutdown() { | 555 void Dispatcher::OnRenderProcessShutdown() { |
555 v8_schema_registry_.reset(); | 556 v8_schema_registry_.reset(); |
| 557 forced_idle_timer_.reset(); |
556 } | 558 } |
557 | 559 |
558 void Dispatcher::OnSetFunctionNames( | 560 void Dispatcher::OnSetFunctionNames( |
559 const std::vector<std::string>& names) { | 561 const std::vector<std::string>& names) { |
560 function_names_.clear(); | 562 function_names_.clear(); |
561 for (size_t i = 0; i < names.size(); ++i) | 563 for (size_t i = 0; i < names.size(); ++i) |
562 function_names_.insert(names[i]); | 564 function_names_.insert(names[i]); |
563 } | 565 } |
564 | 566 |
565 void Dispatcher::OnSetSystemFont(const std::string& font_family, | 567 void Dispatcher::OnSetSystemFont(const std::string& font_family, |
(...skipping 1128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1694 } | 1696 } |
1695 | 1697 |
1696 void Dispatcher::ClearPortData(int port_id) { | 1698 void Dispatcher::ClearPortData(int port_id) { |
1697 // Only the target port side has entries in |port_to_tab_id_map_|. If | 1699 // Only the target port side has entries in |port_to_tab_id_map_|. If |
1698 // |port_id| is a source port, std::map::erase() will just silently fail | 1700 // |port_id| is a source port, std::map::erase() will just silently fail |
1699 // here as a no-op. | 1701 // here as a no-op. |
1700 port_to_tab_id_map_.erase(port_id); | 1702 port_to_tab_id_map_.erase(port_id); |
1701 } | 1703 } |
1702 | 1704 |
1703 } // namespace extensions | 1705 } // namespace extensions |
OLD | NEW |