OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/render_thread.h" | 5 #include "chrome/renderer/render_thread.h" |
6 | 6 |
7 #include <v8.h> | 7 #include <v8.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <map> | 10 #include <map> |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 #include "chrome/renderer/extensions/js_only_v8_extensions.h" | 46 #include "chrome/renderer/extensions/js_only_v8_extensions.h" |
47 #include "chrome/renderer/extensions/renderer_extension_bindings.h" | 47 #include "chrome/renderer/extensions/renderer_extension_bindings.h" |
48 #include "chrome/renderer/external_extension.h" | 48 #include "chrome/renderer/external_extension.h" |
49 #include "chrome/renderer/loadtimes_extension_bindings.h" | 49 #include "chrome/renderer/loadtimes_extension_bindings.h" |
50 #include "chrome/renderer/net/render_dns_master.h" | 50 #include "chrome/renderer/net/render_dns_master.h" |
51 #include "chrome/renderer/render_process.h" | 51 #include "chrome/renderer/render_process.h" |
52 #include "chrome/renderer/render_view.h" | 52 #include "chrome/renderer/render_view.h" |
53 #include "chrome/renderer/renderer_webkitclient_impl.h" | 53 #include "chrome/renderer/renderer_webkitclient_impl.h" |
54 #include "chrome/renderer/renderer_web_database_observer.h" | 54 #include "chrome/renderer/renderer_web_database_observer.h" |
55 #include "chrome/renderer/socket_stream_dispatcher.h" | 55 #include "chrome/renderer/socket_stream_dispatcher.h" |
56 #if defined(SPELLCHECKER_IN_RENDERER) | |
57 #include "chrome/renderer/spellchecker/spellcheck.h" | 56 #include "chrome/renderer/spellchecker/spellcheck.h" |
58 #endif | |
59 #include "chrome/renderer/user_script_slave.h" | 57 #include "chrome/renderer/user_script_slave.h" |
60 #include "ipc/ipc_message.h" | 58 #include "ipc/ipc_message.h" |
61 #include "ipc/ipc_platform_file.h" | 59 #include "ipc/ipc_platform_file.h" |
62 #include "third_party/tcmalloc/tcmalloc/src/google/malloc_extension.h" | 60 #include "third_party/tcmalloc/tcmalloc/src/google/malloc_extension.h" |
63 #include "third_party/WebKit/WebKit/chromium/public/WebCache.h" | 61 #include "third_party/WebKit/WebKit/chromium/public/WebCache.h" |
64 #include "third_party/WebKit/WebKit/chromium/public/WebColor.h" | 62 #include "third_party/WebKit/WebKit/chromium/public/WebColor.h" |
65 #include "third_party/WebKit/WebKit/chromium/public/WebCrossOriginPreflightResul
tCache.h" | 63 #include "third_party/WebKit/WebKit/chromium/public/WebCrossOriginPreflightResul
tCache.h" |
66 #include "third_party/WebKit/WebKit/chromium/public/WebDatabase.h" | 64 #include "third_party/WebKit/WebKit/chromium/public/WebDatabase.h" |
67 #include "third_party/WebKit/WebKit/chromium/public/WebFontCache.h" | 65 #include "third_party/WebKit/WebKit/chromium/public/WebFontCache.h" |
68 #include "third_party/WebKit/WebKit/chromium/public/WebKit.h" | 66 #include "third_party/WebKit/WebKit/chromium/public/WebKit.h" |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 visited_link_slave_.reset(new VisitedLinkSlave()); | 149 visited_link_slave_.reset(new VisitedLinkSlave()); |
152 user_script_slave_.reset(new UserScriptSlave()); | 150 user_script_slave_.reset(new UserScriptSlave()); |
153 dns_master_.reset(new RenderDnsMaster()); | 151 dns_master_.reset(new RenderDnsMaster()); |
154 histogram_snapshots_.reset(new RendererHistogramSnapshots()); | 152 histogram_snapshots_.reset(new RendererHistogramSnapshots()); |
155 appcache_dispatcher_.reset(new AppCacheDispatcher(this)); | 153 appcache_dispatcher_.reset(new AppCacheDispatcher(this)); |
156 socket_stream_dispatcher_.reset(new SocketStreamDispatcher()); | 154 socket_stream_dispatcher_.reset(new SocketStreamDispatcher()); |
157 devtools_agent_filter_ = new DevToolsAgentFilter(); | 155 devtools_agent_filter_ = new DevToolsAgentFilter(); |
158 AddFilter(devtools_agent_filter_.get()); | 156 AddFilter(devtools_agent_filter_.get()); |
159 db_message_filter_ = new DBMessageFilter(); | 157 db_message_filter_ = new DBMessageFilter(); |
160 AddFilter(db_message_filter_.get()); | 158 AddFilter(db_message_filter_.get()); |
161 #if defined(SPELLCHECKER_IN_RENDERER) | |
162 spellchecker_.reset(new SpellCheck()); | 159 spellchecker_.reset(new SpellCheck()); |
163 #endif | |
164 | 160 |
165 #if defined(OS_POSIX) | 161 #if defined(OS_POSIX) |
166 suicide_on_channel_error_filter_ = new SuicideOnChannelErrorFilter; | 162 suicide_on_channel_error_filter_ = new SuicideOnChannelErrorFilter; |
167 AddFilter(suicide_on_channel_error_filter_.get()); | 163 AddFilter(suicide_on_channel_error_filter_.get()); |
168 #endif | 164 #endif |
169 } | 165 } |
170 | 166 |
171 RenderThread::~RenderThread() { | 167 RenderThread::~RenderThread() { |
172 // Shutdown in reverse of the initialization order. | 168 // Shutdown in reverse of the initialization order. |
173 RemoveFilter(devtools_agent_filter_.get()); | 169 RemoveFilter(devtools_agent_filter_.get()); |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 IPC_MESSAGE_HANDLER(ViewMsg_Extension_SetHostPermissions, | 330 IPC_MESSAGE_HANDLER(ViewMsg_Extension_SetHostPermissions, |
335 OnExtensionSetHostPermissions) | 331 OnExtensionSetHostPermissions) |
336 IPC_MESSAGE_HANDLER(ViewMsg_DOMStorageEvent, | 332 IPC_MESSAGE_HANDLER(ViewMsg_DOMStorageEvent, |
337 OnDOMStorageEvent) | 333 OnDOMStorageEvent) |
338 IPC_MESSAGE_HANDLER(ViewMsg_Extension_SetL10nMessages, | 334 IPC_MESSAGE_HANDLER(ViewMsg_Extension_SetL10nMessages, |
339 OnExtensionSetL10nMessages) | 335 OnExtensionSetL10nMessages) |
340 #if defined(IPC_MESSAGE_LOG_ENABLED) | 336 #if defined(IPC_MESSAGE_LOG_ENABLED) |
341 IPC_MESSAGE_HANDLER(ViewMsg_SetIPCLoggingEnabled, | 337 IPC_MESSAGE_HANDLER(ViewMsg_SetIPCLoggingEnabled, |
342 OnSetIPCLoggingEnabled) | 338 OnSetIPCLoggingEnabled) |
343 #endif | 339 #endif |
344 #if defined(SPELLCHECKER_IN_RENDERER) | |
345 IPC_MESSAGE_HANDLER(ViewMsg_SpellChecker_Init, | 340 IPC_MESSAGE_HANDLER(ViewMsg_SpellChecker_Init, |
346 OnInitSpellChecker) | 341 OnInitSpellChecker) |
347 IPC_MESSAGE_HANDLER(ViewMsg_SpellChecker_WordAdded, | 342 IPC_MESSAGE_HANDLER(ViewMsg_SpellChecker_WordAdded, |
348 OnSpellCheckWordAdded) | 343 OnSpellCheckWordAdded) |
349 IPC_MESSAGE_HANDLER(ViewMsg_SpellChecker_EnableAutoSpellCorrect, | 344 IPC_MESSAGE_HANDLER(ViewMsg_SpellChecker_EnableAutoSpellCorrect, |
350 OnSpellCheckEnableAutoSpellCorrect) | 345 OnSpellCheckEnableAutoSpellCorrect) |
351 #endif | |
352 IPC_END_MESSAGE_MAP() | 346 IPC_END_MESSAGE_MAP() |
353 } | 347 } |
354 | 348 |
355 void RenderThread::OnSetNextPageID(int32 next_page_id) { | 349 void RenderThread::OnSetNextPageID(int32 next_page_id) { |
356 // This should only be called at process initialization time, so we shouldn't | 350 // This should only be called at process initialization time, so we shouldn't |
357 // have to worry about thread-safety. | 351 // have to worry about thread-safety. |
358 RenderView::SetNextPageID(next_page_id); | 352 RenderView::SetNextPageID(next_page_id); |
359 } | 353 } |
360 | 354 |
361 // Called when to register CSS Color name->system color mappings. | 355 // Called when to register CSS Color name->system color mappings. |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 } | 442 } |
449 | 443 |
450 void RenderThread::CloseIdleConnections() { | 444 void RenderThread::CloseIdleConnections() { |
451 Send(new ViewHostMsg_CloseIdleConnections()); | 445 Send(new ViewHostMsg_CloseIdleConnections()); |
452 } | 446 } |
453 | 447 |
454 void RenderThread::SetCacheMode(bool enabled) { | 448 void RenderThread::SetCacheMode(bool enabled) { |
455 Send(new ViewHostMsg_SetCacheMode(enabled)); | 449 Send(new ViewHostMsg_SetCacheMode(enabled)); |
456 } | 450 } |
457 | 451 |
458 #if defined(SPELLCHECKER_IN_RENDERER) | |
459 void RenderThread::RequestSpellCheckDictionary() { | |
460 Send(new ViewHostMsg_SpellChecker_RequestDictionary); | |
461 } | |
462 #endif | |
463 | |
464 static void* CreateHistogram( | 452 static void* CreateHistogram( |
465 const char *name, int min, int max, size_t buckets) { | 453 const char *name, int min, int max, size_t buckets) { |
466 Histogram* histogram = new Histogram(name, min, max, buckets); | 454 Histogram* histogram = new Histogram(name, min, max, buckets); |
467 if (histogram) { | 455 if (histogram) { |
468 histogram->SetFlags(kUmaTargetedHistogramFlag); | 456 histogram->SetFlags(kUmaTargetedHistogramFlag); |
469 } | 457 } |
470 return histogram; | 458 return histogram; |
471 } | 459 } |
472 | 460 |
473 static void AddHistogramSample(void* hist, int sample) { | 461 static void AddHistogramSample(void* hist, int sample) { |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
607 task_factory_->NewRunnableMethod(&RenderThread::IdleHandler), | 595 task_factory_->NewRunnableMethod(&RenderThread::IdleHandler), |
608 static_cast<int64>(floor(idle_notification_delay_in_s_)) * 1000); | 596 static_cast<int64>(floor(idle_notification_delay_in_s_)) * 1000); |
609 } | 597 } |
610 | 598 |
611 void RenderThread::OnExtensionMessageInvoke(const std::string& function_name, | 599 void RenderThread::OnExtensionMessageInvoke(const std::string& function_name, |
612 const ListValue& args) { | 600 const ListValue& args) { |
613 RendererExtensionBindings::Invoke(function_name, args, NULL); | 601 RendererExtensionBindings::Invoke(function_name, args, NULL); |
614 } | 602 } |
615 | 603 |
616 void RenderThread::OnPurgeMemory() { | 604 void RenderThread::OnPurgeMemory() { |
617 #if defined(SPELLCHECKER_IN_RENDERER) | |
618 spellchecker_.reset(new SpellCheck()); | 605 spellchecker_.reset(new SpellCheck()); |
619 #endif | |
620 | 606 |
621 EnsureWebKitInitialized(); | 607 EnsureWebKitInitialized(); |
622 | 608 |
623 // Clear the object cache (as much as possible; some live objects cannot be | 609 // Clear the object cache (as much as possible; some live objects cannot be |
624 // freed). | 610 // freed). |
625 WebCache::clear(); | 611 WebCache::clear(); |
626 | 612 |
627 // Clear the font/glyph cache. | 613 // Clear the font/glyph cache. |
628 WebFontCache::clear(); | 614 WebFontCache::clear(); |
629 | 615 |
(...skipping 22 matching lines...) Expand all Loading... |
652 EnsureWebKitInitialized(); | 638 EnsureWebKitInitialized(); |
653 // The call below will cause a GetPlugins call with refresh=true, but at this | 639 // The call below will cause a GetPlugins call with refresh=true, but at this |
654 // point we already know that the browser has refreshed its list, so disable | 640 // point we already know that the browser has refreshed its list, so disable |
655 // refresh temporarily to prevent each renderer process causing the list to be | 641 // refresh temporarily to prevent each renderer process causing the list to be |
656 // regenerated. | 642 // regenerated. |
657 plugin_refresh_allowed_ = false; | 643 plugin_refresh_allowed_ = false; |
658 WebKit::resetPluginCache(reload_pages); | 644 WebKit::resetPluginCache(reload_pages); |
659 plugin_refresh_allowed_ = true; | 645 plugin_refresh_allowed_ = true; |
660 } | 646 } |
661 | 647 |
662 #if defined(SPELLCHECKER_IN_RENDERER) | |
663 void RenderThread::OnInitSpellChecker( | 648 void RenderThread::OnInitSpellChecker( |
664 IPC::PlatformFileForTransit bdict_file, | 649 IPC::PlatformFileForTransit bdict_file, |
665 const std::vector<std::string>& custom_words, | 650 const std::vector<std::string>& custom_words, |
666 const std::string& language, | 651 const std::string& language, |
667 bool auto_spell_correct) { | 652 bool auto_spell_correct) { |
668 spellchecker_->Init(IPC::PlatformFileForTransitToPlatformFile(bdict_file), | 653 spellchecker_->Init(IPC::PlatformFileForTransitToPlatformFile(bdict_file), |
669 custom_words, language); | 654 custom_words, language); |
670 spellchecker_->EnableAutoSpellCorrect(auto_spell_correct); | 655 spellchecker_->EnableAutoSpellCorrect(auto_spell_correct); |
671 } | 656 } |
672 | 657 |
673 void RenderThread::OnSpellCheckWordAdded(const std::string& word) { | 658 void RenderThread::OnSpellCheckWordAdded(const std::string& word) { |
674 spellchecker_->WordAdded(word); | 659 spellchecker_->WordAdded(word); |
675 } | 660 } |
676 | 661 |
677 void RenderThread::OnSpellCheckEnableAutoSpellCorrect(bool enable) { | 662 void RenderThread::OnSpellCheckEnableAutoSpellCorrect(bool enable) { |
678 spellchecker_->EnableAutoSpellCorrect(enable); | 663 spellchecker_->EnableAutoSpellCorrect(enable); |
679 } | 664 } |
680 #endif | |
OLD | NEW |