Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(150)

Unified Diff: components/translate/content/browser/content_translate_driver_impl.h

Issue 2066483004: [Wait to be closed] [Translate] Migrate IPCs to Mojo interfaces. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Ensure TranslateCallback get run Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/translate/content/browser/content_translate_driver_impl.h
diff --git a/components/translate/content/browser/content_translate_driver.h b/components/translate/content/browser/content_translate_driver_impl.h
similarity index 68%
rename from components/translate/content/browser/content_translate_driver.h
rename to components/translate/content/browser/content_translate_driver_impl.h
index 685f8e61daadc6b5762f65103605a59ac2960c2d..398075860d4cea59dc457720150dc5588fc5afcc 100644
--- a/components/translate/content/browser/content_translate_driver.h
+++ b/components/translate/content/browser/content_translate_driver_impl.h
@@ -2,15 +2,19 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef COMPONENTS_TRANSLATE_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_H_
-#define COMPONENTS_TRANSLATE_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_H_
+#ifndef COMPONENTS_TRANSLATE_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_IMPL_H_
+#define COMPONENTS_TRANSLATE_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_IMPL_H_
+
+#include <map>
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
+#include "components/translate/content/public/interfaces/translate.mojom.h"
#include "components/translate/core/browser/translate_driver.h"
#include "components/translate/core/common/translate_errors.h"
#include "content/public/browser/web_contents_observer.h"
+#include "mojo/public/cpp/bindings/binding_set.h"
namespace content {
class NavigationController;
@@ -22,37 +26,38 @@ namespace translate {
struct LanguageDetectionDetails;
class TranslateManager;
-
// Content implementation of TranslateDriver.
-class ContentTranslateDriver : public TranslateDriver,
- public content::WebContentsObserver {
+class ContentTranslateDriverImpl : public TranslateDriver,
+ public content::WebContentsObserver,
+ public mojom::ContentTranslateDriver {
public:
-
- // The observer for the ContentTranslateDriver.
+ // The observer for the ContentTranslateDriverImpl.
class Observer {
public:
// Handles when the value of IsPageTranslated is changed.
- virtual void OnIsPageTranslatedChanged(content::WebContents* source) {};
+ virtual void OnIsPageTranslatedChanged(content::WebContents* source){};
Anand Mistry (off Chromium) 2016/07/12 07:17:09 I believe the chromium style is to always have a s
leonhsl(Using Gerrit) 2016/07/12 10:15:10 Acknowledged.
leonhsl(Using Gerrit) 2016/07/13 09:56:18 Done.
// Handles when the value of translate_enabled is changed.
- virtual void OnTranslateEnabledChanged(content::WebContents* source) {};
+ virtual void OnTranslateEnabledChanged(content::WebContents* source){};
// Called when the page language has been determined.
virtual void OnLanguageDetermined(
- const translate::LanguageDetectionDetails& details) {};
+ const translate::LanguageDetectionDetails& details){};
// Called when the page has been translated.
virtual void OnPageTranslated(
const std::string& original_lang,
const std::string& translated_lang,
- translate::TranslateErrors::Type error_type) {};
+ translate::TranslateErrors::Type error_type){};
protected:
virtual ~Observer() {}
};
- ContentTranslateDriver(content::NavigationController* nav_controller);
- ~ContentTranslateDriver() override;
+ ContentTranslateDriverImpl(content::NavigationController* nav_controller);
Anand Mistry (off Chromium) 2016/07/12 07:17:09 explicit on single-arg constructors.
leonhsl(Using Gerrit) 2016/07/12 10:15:09 Acknowledged.
leonhsl(Using Gerrit) 2016/07/13 09:56:18 Done.
+ ~ContentTranslateDriverImpl() override;
+
+ void BindRequest(mojom::ContentTranslateDriverRequest request);
// Adds or Removes observers.
void AddObserver(Observer* observer);
@@ -93,18 +98,20 @@ class ContentTranslateDriver : public TranslateDriver,
void DidNavigateAnyFrame(content::RenderFrameHost* render_frame_host,
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) override;
- bool OnMessageReceived(const IPC::Message& message,
- content::RenderFrameHost* render_frame_host) override;
-
- // IPC handlers.
- void OnTranslateAssignedSequenceNumber(int page_seq_no);
- void OnLanguageDetermined(const LanguageDetectionDetails& details,
- bool page_needs_translation);
- void OnPageTranslated(const std::string& original_lang,
- const std::string& translated_lang,
+
+ void OnPageTranslated(bool cancelled,
+ mojo::String original_lang,
+ mojo::String translated_lang,
TranslateErrors::Type error_type);
+ // mojom::ContentTranslateDriver implementation.
+ void NewPage(mojom::PagePtr page,
+ const LanguageDetectionDetails& details,
+ bool page_needs_translation) override;
+
private:
+ void OnPageAway(int page_seq_no);
+
// The navigation controller of the tab we are associated with.
content::NavigationController* navigation_controller_;
@@ -115,11 +122,19 @@ class ContentTranslateDriver : public TranslateDriver,
// Max number of attempts before checking if a page has been reloaded.
int max_reload_check_attempts_;
- base::WeakPtrFactory<ContentTranslateDriver> weak_pointer_factory_;
+ // Records mojo connections with all current alive pages.
groby-ooo-7-16 2016/07/11 22:34:43 Previously, we only kept the last connection alive
leonhsl(Using Gerrit) 2016/07/12 02:48:17 From my understanding, one WebContents : one Conte
Anand Mistry (off Chromium) 2016/07/12 07:17:09 I don't really understand the translate parts, but
leonhsl(Using Gerrit) 2016/07/12 10:15:09 Oh,, yes we can keep only one PagePtr for the late
+ int next_page_seq_no_;
+ std::map<int, mojom::PagePtr> mojo_pages_;
+
+ // ContentTranslateDriverImpl is singleton per web contents ,
+ // serve for multiple render frames.
+ mojo::BindingSet<mojom::ContentTranslateDriver> bindings_;
+
+ base::WeakPtrFactory<ContentTranslateDriverImpl> weak_pointer_factory_;
- DISALLOW_COPY_AND_ASSIGN(ContentTranslateDriver);
+ DISALLOW_COPY_AND_ASSIGN(ContentTranslateDriverImpl);
};
} // namespace translate
-#endif // COMPONENTS_TRANSLATE_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_H_
+#endif // COMPONENTS_TRANSLATE_CONTENT_BROWSER_CONTENT_TRANSLATE_DRIVER_IMPL_H_

Powered by Google App Engine
This is Rietveld 408576698