// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/ui/translate/translate_bubble_factory.h"

#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h"

namespace {

void ShowDefault(BrowserWindow* window,
                 content::WebContents* web_contents,
                 translate::TranslateStep step,
                 TranslateErrors::Type error_type) {
  // |window| might be null when testing.
  if (!window)
    return;
  window->ShowTranslateBubble(web_contents, step, error_type);
}

}  // namespace

TranslateBubbleFactory::~TranslateBubbleFactory() {
}

// static
void TranslateBubbleFactory::Show(BrowserWindow* window,
                                  content::WebContents* web_contents,
                                  translate::TranslateStep step,
                                  TranslateErrors::Type error_type) {
  if (current_factory_) {
    current_factory_->ShowImplementation(
        window, web_contents, step, error_type);
    return;
  }

  ShowDefault(window, web_contents, step, error_type);
}

// static
void TranslateBubbleFactory::SetFactory(TranslateBubbleFactory* factory) {
  current_factory_ = factory;
}

// static
TranslateBubbleFactory* TranslateBubbleFactory::current_factory_ = NULL;
