Commit 527353a3 authored by andrewhayden's avatar andrewhayden Committed by Commit bot

Restore non-static CLD data functionality.

When the translate client was refactored to be managed by the translate driver
and to use a RenderFrameHost instead of a RenderViewHost, it accidentally broke
non-static CLD initialization because the IPC messages being received by the
translate driver were not being passed into the CLD data provider. This change
moves the relevant code from the translate client into the translate driver and
restores functionality.

BUG=571016
TBR=droger@chromium.org

Review URL: https://codereview.chromium.org/1543533002

Cr-Commit-Position: refs/heads/master@{#369396}
parent 8071b1d4
......@@ -25,7 +25,6 @@
#include "chrome/browser/ui/translate/translate_bubble_factory.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/pref_names.h"
#include "components/translate/content/browser/browser_cld_data_provider_factory.h"
#include "components/translate/content/common/cld_data_source.h"
#include "components/translate/content/common/translate_messages.h"
#include "components/translate/core/browser/language_state.h"
......@@ -61,14 +60,13 @@ ChromeTranslateClient::ChromeTranslateClient(content::WebContents* web_contents)
: content::WebContentsObserver(web_contents),
translate_driver_(&web_contents->GetController()),
translate_manager_(
new translate::TranslateManager(this, prefs::kAcceptLanguages)),
cld_data_provider_(
translate::BrowserCldDataProviderFactory::Get()->
CreateBrowserCldDataProvider(web_contents)) {
new translate::TranslateManager(this, prefs::kAcceptLanguages)) {
translate_driver_.AddObserver(this);
translate_driver_.set_translate_manager(translate_manager_.get());
// Customization: for the standalone data source, we configure the path to
// CLD data immediately on startup.
// TODO(andrewhayden): This belongs in the data source implementation, not
// here.
if (translate::CldDataSource::IsUsingStandaloneDataSource() &&
!g_cld_file_path_initialized_) {
DVLOG(1) << "Initializing CLD file path for the first time.";
......@@ -275,10 +273,6 @@ void ChromeTranslateClient::ShowReportLanguageDetectionErrorUI(
#endif // defined(OS_ANDROID)
}
bool ChromeTranslateClient::OnMessageReceived(const IPC::Message& message) {
return cld_data_provider_->OnMessageReceived(message);
}
void ChromeTranslateClient::WebContentsDestroyed() {
// Translation process can be interrupted.
// Destroying the TranslateManager now guarantees that it never has to deal
......
......@@ -10,7 +10,6 @@
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/ui/translate/translate_bubble_model.h"
#include "components/translate/content/browser/browser_cld_data_provider.h"
#include "components/translate/content/browser/content_translate_driver.h"
#include "components/translate/core/browser/translate_client.h"
#include "components/translate/core/browser/translate_step.h"
......@@ -109,7 +108,6 @@ class ChromeTranslateClient
friend class content::WebContentsUserData<ChromeTranslateClient>;
// content::WebContentsObserver implementation.
bool OnMessageReceived(const IPC::Message& message) override;
void WebContentsDestroyed() override;
// Shows the translate bubble.
......@@ -119,9 +117,6 @@ class ChromeTranslateClient
translate::ContentTranslateDriver translate_driver_;
scoped_ptr<translate::TranslateManager> translate_manager_;
// Provides CLD data for this process.
scoped_ptr<translate::BrowserCldDataProvider> cld_data_provider_;
DISALLOW_COPY_AND_ASSIGN(ChromeTranslateClient);
};
......
......@@ -9,6 +9,8 @@
#include "base/logging.h"
#include "base/single_thread_task_runner.h"
#include "base/thread_task_runner_handle.h"
#include "components/translate/content/browser/browser_cld_data_provider.h"
#include "components/translate/content/browser/browser_cld_data_provider_factory.h"
#include "components/translate/content/common/translate_messages.h"
#include "components/translate/core/browser/translate_download_manager.h"
#include "components/translate/core/browser/translate_manager.h"
......@@ -39,6 +41,9 @@ ContentTranslateDriver::ContentTranslateDriver(
navigation_controller_(nav_controller),
translate_manager_(NULL),
max_reload_check_attempts_(kMaxTranslateLoadCheckAttempts),
cld_data_provider_(
translate::BrowserCldDataProviderFactory::Get()->
CreateBrowserCldDataProvider(nav_controller->GetWebContents())),
weak_pointer_factory_(this) {
DCHECK(navigation_controller_);
}
......@@ -218,6 +223,12 @@ bool ContentTranslateDriver::OnMessageReceived(
IPC_MESSAGE_HANDLER(ChromeFrameHostMsg_PageTranslated, OnPageTranslated)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
if (!handled) {
// The CLD Data Provider may have its own embedder-specific communication,
// such as transferring the file handle for a CLD data file to the render
// process.
handled = cld_data_provider_->OnMessageReceived(message);
}
return handled;
}
......
......@@ -21,6 +21,8 @@ namespace translate {
struct LanguageDetectionDetails;
class TranslateManager;
class BrowserCldDataProvider;
// Content implementation of TranslateDriver.
class ContentTranslateDriver : public TranslateDriver,
......@@ -114,6 +116,9 @@ class ContentTranslateDriver : public TranslateDriver,
// Max number of attempts before checking if a page has been reloaded.
int max_reload_check_attempts_;
// Provides CLD data for this process.
scoped_ptr<translate::BrowserCldDataProvider> cld_data_provider_;
base::WeakPtrFactory<ContentTranslateDriver> weak_pointer_factory_;
DISALLOW_COPY_AND_ASSIGN(ContentTranslateDriver);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment