Chromium Code Reviews| 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 273522e0634cdc92be8c03409c73a9d37be8fc24..8cc9ac793fe833ad8aa056e57cc17daea083b13f 100644 |
| --- a/chrome/renderer/chrome_content_renderer_client.cc |
| +++ b/chrome/renderer/chrome_content_renderer_client.cc |
| @@ -91,6 +91,7 @@ |
| #include "content/public/common/url_constants.h" |
| #include "content/public/renderer/plugin_instance_throttler.h" |
| #include "content/public/renderer/render_frame.h" |
| +#include "content/public/renderer/render_frame_visitor.h" |
| #include "content/public/renderer/render_thread.h" |
| #include "content/public/renderer/render_view.h" |
| #include "content/public/renderer/render_view_visitor.h" |
| @@ -250,19 +251,19 @@ void AppendParams(const std::vector<base::string16>& additional_names, |
| #endif // BUILDFLAG(ENABLE_PLUGINS) |
| #if BUILDFLAG(ENABLE_SPELLCHECK) |
| -class SpellCheckReplacer : public content::RenderViewVisitor { |
| +class SpellCheckReplacer : public content::RenderFrameVisitor { |
| public: |
| explicit SpellCheckReplacer(SpellCheck* spellcheck) |
| : spellcheck_(spellcheck) {} |
| - bool Visit(content::RenderView* render_view) override; |
| + bool Visit(content::RenderFrame* render_frame) override; |
| private: |
| SpellCheck* spellcheck_; // New shared spellcheck for all views. Weak Ptr. |
| DISALLOW_COPY_AND_ASSIGN(SpellCheckReplacer); |
| }; |
| -bool SpellCheckReplacer::Visit(content::RenderView* render_view) { |
| - SpellCheckProvider* provider = SpellCheckProvider::Get(render_view); |
| +bool SpellCheckReplacer::Visit(content::RenderFrame* render_frame) { |
| + SpellCheckProvider* provider = SpellCheckProvider::Get(render_frame); |
| DCHECK(provider); |
| provider->set_spellcheck(spellcheck_); |
| return true; |
| @@ -567,11 +568,7 @@ void ChromeContentRendererClient::RenderFrameCreated( |
| } |
| #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); |
| - } |
| + new SpellCheckProvider(render_frame, spellcheck_.get()); |
|
Xiaocheng
2017/04/07 01:43:45
SpellCheckProvider created at RenderFrameCreated()
|
| #endif |
| } |
| @@ -581,16 +578,6 @@ void ChromeContentRendererClient::RenderViewCreated( |
| ChromeExtensionsRendererClient::GetInstance()->RenderViewCreated(render_view); |
| #endif |
| #if BUILDFLAG(ENABLE_SPELLCHECK) |
| - 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(xiaochengh): Remove this workaround once SpellCheckProvider becomes |
| - // 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); |
| @@ -1235,7 +1222,7 @@ void ChromeContentRendererClient::SetSpellcheck(SpellCheck* spellcheck) { |
| thread->RemoveObserver(spellcheck_.get()); |
| spellcheck_.reset(spellcheck); |
| SpellCheckReplacer replacer(spellcheck_.get()); |
| - content::RenderView::ForEach(&replacer); |
| + content::RenderFrame::ForEach(&replacer); |
| if (thread) |
| thread->AddObserver(spellcheck_.get()); |
| } |