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

Unified Diff: chrome/browser/translate/translate_manager.h

Issue 166963002: TranslateManager is no longer a singleton (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@temp
Patch Set: Fix TODO comment Created 6 years, 10 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: chrome/browser/translate/translate_manager.h
diff --git a/chrome/browser/translate/translate_manager.h b/chrome/browser/translate/translate_manager.h
index b3e779a5962ea703409f214d1246092f0311ebba..8aeb5082efc41b3760f7acb1814cbc1c412e65b0 100644
--- a/chrome/browser/translate/translate_manager.h
+++ b/chrome/browser/translate/translate_manager.h
@@ -16,11 +16,11 @@
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
-template <typename T> struct DefaultSingletonTraits;
class GURL;
struct PageTranslatedDetails;
class PrefService;
struct TranslateErrorDetails;
+class TranslateTabHelper;
namespace content {
class WebContents;
@@ -29,13 +29,11 @@ class WebContents;
// The TranslateManager class is responsible for showing an info-bar when a page
// in a language different than the user language is loaded. It triggers the
// page translation the user requests.
-// It is a singleton.
class TranslateManager : public content::NotificationObserver {
public:
- // Returns the singleton instance.
- static TranslateManager* GetInstance();
-
+ // TranslateTabHelper is expected to outlive the TranslateManager.
+ explicit TranslateManager(TranslateTabHelper* helper);
virtual ~TranslateManager();
// Returns true if the URL can be translated.
@@ -57,18 +55,16 @@ class TranslateManager : public content::NotificationObserver {
// Translates the page contents from |source_lang| to |target_lang|.
// The actual translation might be performed asynchronously if the translate
// script is not yet available.
- void TranslatePage(content::WebContents* web_contents,
- const std::string& source_lang,
+ void TranslatePage(const std::string& source_lang,
const std::string& target_lang);
- // Reverts the contents of the page in |web_contents| to its original
- // language.
- void RevertTranslation(content::WebContents* web_contents);
+ // Reverts the contents of the page to its original language.
+ void RevertTranslation();
// Reports to the Google translate server that a page language was incorrectly
// detected. This call is initiated by the user selecting the "report" menu
// under options in the translate infobar.
- void ReportLanguageDetectionError(content::WebContents* web_contents);
+ void ReportLanguageDetectionError();
// content::NotificationObserver implementation:
virtual void Observe(int type,
@@ -90,44 +86,26 @@ class TranslateManager : public content::NotificationObserver {
static scoped_ptr<TranslateErrorCallbackList::Subscription>
RegisterTranslateErrorCallback(const TranslateErrorCallback& callback);
- protected:
- TranslateManager();
-
private:
- friend struct DefaultSingletonTraits<TranslateManager>;
-
- // Structure that describes a translate request.
- // Translation may be deferred while the translate script is being retrieved
- // from the translate server.
- struct PendingRequest {
- int render_process_id;
- int render_view_id;
- int page_id;
- std::string source_lang;
- std::string target_lang;
- };
-
- // Starts the translation process on |tab| containing the page in the
- // |page_lang| language.
- void InitiateTranslation(content::WebContents* web_contents,
- const std::string& page_lang);
-
- // If the tab identified by |process_id| and |render_id| has been closed, this
- // does nothing, otherwise it calls InitiateTranslation.
- void InitiateTranslationPosted(int process_id, int render_id,
- const std::string& page_lang, int attempt);
-
- // Sends a translation request to the RenderView of |web_contents|.
- void DoTranslatePage(content::WebContents* web_contents,
- const std::string& translate_script,
+ // Starts the translation process for a page in the |page_lang| language.
+ void InitiateTranslation(const std::string& page_lang);
+
+ // Initiates translation once the page is finished loading.
+ void InitiateTranslationPosted(const std::string& page_lang, int attempt);
+
+ // Sends a translation request to the RenderView.
+ void DoTranslatePage(const std::string& translate_script,
const std::string& source_lang,
const std::string& target_lang);
// Shows the after translate or error infobar depending on the details.
- void PageTranslated(content::WebContents* web_contents,
- PageTranslatedDetails* details);
+ void PageTranslated(PageTranslatedDetails* details);
- void OnTranslateScriptFetchComplete(PendingRequest request,
+ // Called when the Translate script has been fetched.
+ // Initiates the translation.
+ void OnTranslateScriptFetchComplete(int page_id,
+ const std::string& source_lang,
+ const std::string& target_lang,
bool success,
const std::string& data);
@@ -136,6 +114,8 @@ class TranslateManager : public content::NotificationObserver {
// Max number of attempts before checking if a page has been reloaded.
int max_reload_check_attempts_;
+ TranslateTabHelper* translate_tab_helper_; // Weak.
+
base::WeakPtrFactory<TranslateManager> weak_method_factory_;
DISALLOW_COPY_AND_ASSIGN(TranslateManager);
« no previous file with comments | « chrome/browser/translate/translate_infobar_delegate.cc ('k') | chrome/browser/translate/translate_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698