Index: chrome/renderer/chrome_content_renderer_client.cc |
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc |
index 77fd3cadaba22631c2b2c6b4747a090a3ef09c0f..3801d5128217dfb492f40e2516eccf4d929d7eb3 100644 |
--- a/chrome/renderer/chrome_content_renderer_client.cc |
+++ b/chrome/renderer/chrome_content_renderer_client.cc |
@@ -565,6 +565,14 @@ void ChromeContentRendererClient::RenderFrameCreated( |
render_frame->IsMainFrame()) { |
new SearchBox(render_frame); |
} |
+ |
+#if BUILDFLAG(ENABLE_SPELLCHECK) |
+ // TODO(xiaochengh): Use a different SpellCheckProvider for each RenderFrame. |
+ if (SpellCheckProvider* provider = |
+ SpellCheckProvider::Get(render_frame->GetRenderView())) { |
+ render_frame->GetWebFrame()->setTextCheckClient(provider); |
+ } |
+#endif |
} |
void ChromeContentRendererClient::RenderViewCreated( |
@@ -573,7 +581,16 @@ void ChromeContentRendererClient::RenderViewCreated( |
ChromeExtensionsRendererClient::GetInstance()->RenderViewCreated(render_view); |
#endif |
#if BUILDFLAG(ENABLE_SPELLCHECK) |
- new SpellCheckProvider(render_view, spellcheck_.get()); |
+ SpellCheckProvider* provider = |
+ new SpellCheckProvider(render_view, spellcheck_.get()); |
+ // For a main frame of a view, RenderFrameCreated is called earlier than |
+ // RenderViewCreated. This workaround ensures that WebTextCheckClient is |
+ // still set for any main frame. |
+ // TODO(xiaocheng): Remove this workaround once SpellCheckProvider becomes |
Lei Zhang
2017/04/05 23:49:19
Your two newly added TODOs have different user nam
Xiaocheng
2017/04/06 02:58:30
Whoops. Thanks for catching.
|
+ // a RenderFrameObserver. |
+ if (content::RenderFrame* main_frame = render_view->GetMainRenderFrame()) |
+ main_frame->GetWebFrame()->setTextCheckClient(provider); |
+ |
new SpellCheckPanel(render_view); |
#endif |
new prerender::PrerendererClient(render_view); |