Home | History | Annotate | Download | only in translate
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/translate/translate_tab_helper.h"
      6 
      7 #include "chrome/browser/translate/page_translated_details.h"
      8 #include "chrome/common/render_messages.h"
      9 #include "content/browser/tab_contents/tab_contents.h"
     10 #include "content/common/notification_service.h"
     11 
     12 TranslateTabHelper::TranslateTabHelper(TabContents* tab_contents)
     13     : TabContentsObserver(tab_contents),
     14       language_state_(&tab_contents->controller()) {
     15 }
     16 
     17 TranslateTabHelper::~TranslateTabHelper() {
     18 }
     19 
     20 bool TranslateTabHelper::OnMessageReceived(const IPC::Message& message) {
     21   bool handled = true;
     22   IPC_BEGIN_MESSAGE_MAP(TranslateTabHelper, message)
     23     IPC_MESSAGE_HANDLER(ViewHostMsg_TranslateLanguageDetermined,
     24                         OnLanguageDetermined)
     25     IPC_MESSAGE_HANDLER(ViewHostMsg_PageTranslated, OnPageTranslated)
     26     IPC_MESSAGE_UNHANDLED(handled = false)
     27   IPC_END_MESSAGE_MAP()
     28 
     29   return handled;
     30 }
     31 
     32 void TranslateTabHelper::DidNavigateAnyFramePostCommit(
     33     const NavigationController::LoadCommittedDetails& details,
     34     const ViewHostMsg_FrameNavigate_Params& params) {
     35   // Let the LanguageState clear its state.
     36   language_state_.DidNavigate(details);
     37 }
     38 
     39 void TranslateTabHelper::OnLanguageDetermined(const std::string& language,
     40                                               bool page_translatable) {
     41   language_state_.LanguageDetermined(language, page_translatable);
     42 
     43   std::string lang = language;
     44   NotificationService::current()->Notify(
     45       NotificationType::TAB_LANGUAGE_DETERMINED,
     46       Source<TabContents>(tab_contents()),
     47       Details<std::string>(&lang));
     48 }
     49 
     50 void TranslateTabHelper::OnPageTranslated(int32 page_id,
     51                                           const std::string& original_lang,
     52                                           const std::string& translated_lang,
     53                                           TranslateErrors::Type error_type) {
     54   language_state_.set_current_language(translated_lang);
     55   language_state_.set_translation_pending(false);
     56   PageTranslatedDetails details(original_lang, translated_lang, error_type);
     57   NotificationService::current()->Notify(
     58       NotificationType::PAGE_TRANSLATED,
     59       Source<TabContents>(tab_contents()),
     60       Details<PageTranslatedDetails>(&details));
     61 }
     62