This source file includes following definitions.
- Show
- GetInstance
- ShowDialog
- GetDialogModalType
- GetDialogTitle
- GetDialogContentURL
- GetWebUIMessageHandlers
- GetDialogSize
- GetDialogArgs
- OnDialogClosed
- OnCloseContents
- ShouldShowDialogTitle
- HandleContextMenu
#include "chrome/browser/ui/webui/chromeos/mobile_setup_dialog.h"
#include "base/bind.h"
#include "base/memory/singleton.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/browser_shutdown.h"
#include "chrome/browser/chromeos/login/login_display_host_impl.h"
#include "chrome/browser/chromeos/login/webui_login_view.h"
#include "chrome/browser/chromeos/mobile/mobile_activator.h"
#include "chrome/browser/platform_util.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/browser_dialogs.h"
#include "chrome/browser/ui/simple_message_box.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/browser_thread.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/gfx/size.h"
#include "ui/views/widget/widget.h"
#include "ui/web_dialogs/web_dialog_delegate.h"
using chromeos::MobileActivator;
using content::BrowserThread;
using content::WebContents;
using content::WebUIMessageHandler;
using ui::WebDialogDelegate;
class MobileSetupDialogDelegate : public WebDialogDelegate {
public:
static MobileSetupDialogDelegate* GetInstance();
void ShowDialog(const std::string& service_path);
protected:
friend struct DefaultSingletonTraits<MobileSetupDialogDelegate>;
MobileSetupDialogDelegate();
virtual ~MobileSetupDialogDelegate();
void OnCloseDialog();
virtual ui::ModalType GetDialogModalType() const OVERRIDE;
virtual base::string16 GetDialogTitle() const OVERRIDE;
virtual GURL GetDialogContentURL() const OVERRIDE;
virtual void GetWebUIMessageHandlers(
std::vector<WebUIMessageHandler*>* handlers) const OVERRIDE;
virtual void GetDialogSize(gfx::Size* size) const OVERRIDE;
virtual std::string GetDialogArgs() const OVERRIDE;
virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE;
virtual void OnCloseContents(WebContents* source,
bool* out_close_dialog) OVERRIDE;
virtual bool ShouldShowDialogTitle() const OVERRIDE;
virtual bool HandleContextMenu(
const content::ContextMenuParams& params) OVERRIDE;
private:
gfx::NativeWindow dialog_window_;
std::string service_path_;
DISALLOW_COPY_AND_ASSIGN(MobileSetupDialogDelegate);
};
void MobileSetupDialog::Show(const std::string& service_path) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
MobileSetupDialogDelegate::GetInstance()->ShowDialog(service_path);
}
MobileSetupDialogDelegate* MobileSetupDialogDelegate::GetInstance() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
return Singleton<MobileSetupDialogDelegate>::get();
}
MobileSetupDialogDelegate::MobileSetupDialogDelegate() : dialog_window_(NULL) {
}
MobileSetupDialogDelegate::~MobileSetupDialogDelegate() {
}
void MobileSetupDialogDelegate::ShowDialog(const std::string& service_path) {
service_path_ = service_path;
gfx::NativeWindow parent = NULL;
if (chromeos::LoginDisplayHostImpl::default_host()) {
chromeos::LoginDisplayHostImpl* webui_host =
static_cast<chromeos::LoginDisplayHostImpl*>(
chromeos::LoginDisplayHostImpl::default_host());
chromeos::WebUILoginView* login_view = webui_host->GetWebUILoginView();
if (login_view)
parent = login_view->GetNativeWindow();
}
dialog_window_ = chrome::ShowWebDialog(
parent,
ProfileManager::GetPrimaryUserProfile(),
this);
}
ui::ModalType MobileSetupDialogDelegate::GetDialogModalType() const {
return ui::MODAL_TYPE_SYSTEM;
}
base::string16 MobileSetupDialogDelegate::GetDialogTitle() const {
return l10n_util::GetStringUTF16(IDS_MOBILE_SETUP_TITLE);
}
GURL MobileSetupDialogDelegate::GetDialogContentURL() const {
std::string url(chrome::kChromeUIMobileSetupURL);
url.append(service_path_);
return GURL(url);
}
void MobileSetupDialogDelegate::GetWebUIMessageHandlers(
std::vector<WebUIMessageHandler*>* handlers) const {
}
void MobileSetupDialogDelegate::GetDialogSize(gfx::Size* size) const {
size->SetSize(850, 650);
}
std::string MobileSetupDialogDelegate::GetDialogArgs() const {
return std::string();
}
void MobileSetupDialogDelegate::OnDialogClosed(const std::string& json_retval) {
dialog_window_ = NULL;
}
void MobileSetupDialogDelegate::OnCloseContents(WebContents* source,
bool* out_close_dialog) {
if (!dialog_window_ ||
!MobileActivator::GetInstance()->RunningActivation() ||
browser_shutdown::IsTryingToQuit()) {
*out_close_dialog = true;
return;
}
*out_close_dialog = chrome::ShowMessageBox(dialog_window_,
l10n_util::GetStringUTF16(IDS_MOBILE_SETUP_TITLE),
l10n_util::GetStringUTF16(IDS_MOBILE_CANCEL_ACTIVATION),
chrome::MESSAGE_BOX_TYPE_QUESTION);
}
bool MobileSetupDialogDelegate::ShouldShowDialogTitle() const {
return true;
}
bool MobileSetupDialogDelegate::HandleContextMenu(
const content::ContextMenuParams& params) {
return true;
}