Index: chrome/browser/chromeos/charger_replace/charger_replacement_dialog.cc |
diff --git a/chrome/browser/chromeos/charger_replace/charger_replacement_dialog.cc b/chrome/browser/chromeos/charger_replace/charger_replacement_dialog.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7f5277279089ae0dce411e54e43bbe169d6ccf83 |
--- /dev/null |
+++ b/chrome/browser/chromeos/charger_replace/charger_replacement_dialog.cc |
@@ -0,0 +1,133 @@ |
+// Copyright (c) 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/chromeos/charger_replace/charger_replacement_dialog.h" |
+ |
+#include "base/prefs/pref_service.h" |
+#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/profiles/profile_manager.h" |
+#include "chrome/browser/ui/browser_dialogs.h" |
+#include "chrome/browser/ui/webui/chromeos/charger_replacement_handler.h" |
+#include "chrome/common/url_constants.h" |
+#include "grit/generated_resources.h" |
+#include "ui/base/l10n/l10n_util.h" |
+#include "ui/gfx/size.h" |
+ |
+using content::WebContents; |
+using content::WebUIMessageHandler; |
+ |
+namespace chromeos { |
+ |
+namespace { |
+ |
+const int kDefaultDialogWidth = 500; |
+const int kDefaultDialogHeight = 590; |
+const int kMinDialogWidth = 100; |
+const int kMinDialogHeight = 100; |
+ |
+const char kNewChargerOrdered[] = "1"; |
+const char kNewChargerNotOrdered[] = "0"; |
+ |
+} // namespace |
+ |
+// static member variable. |
+bool ChargerReplacementDialog::is_window_visible_ = false; |
+ |
+ChargerReplacementDialog::ChargerReplacementDialog( |
+ gfx::NativeWindow parent_window) |
+ : parent_window_(parent_window), |
+ can_close_(false), |
+ charger_replacement_handler_(new ChargerReplacementHandler(this)) { |
+} |
+ |
+ChargerReplacementDialog::~ChargerReplacementDialog() { |
+ is_window_visible_ = false; |
+} |
+ |
+bool ChargerReplacementDialog::ShouldShowDialog() { |
+ if (is_window_visible_) |
+ return false; |
+ |
+ ChargerReplacementHandler::SpringChargerStatus charger_status = |
+ ChargerReplacementHandler::GetChargerStatusPref(); |
+ |
+ return (charger_status == ChargerReplacementHandler::CHARGER_UNKNOWN || |
+ charger_status == |
+ ChargerReplacementHandler::CONFIRM_NEW_CHARGER_ORDERED_ONLINE || |
+ charger_status == |
+ ChargerReplacementHandler::CONFIRM_ORDER_NEW_CHARGER_BY_PHONE); |
+} |
+ |
+void ChargerReplacementDialog::Show() { |
+ is_window_visible_ = true; |
+ gfx::NativeWindow dialog_window = |
+ chrome::ShowWebDialog(parent_window_, |
+ ProfileManager::GetDefaultProfile(), |
+ this); |
+ charger_replacement_handler_->set_charger_window(dialog_window); |
+} |
+ |
+ui::ModalType ChargerReplacementDialog::GetDialogModalType() const { |
+ return ui::MODAL_TYPE_SYSTEM; |
+} |
+ |
+string16 ChargerReplacementDialog::GetDialogTitle() const { |
+ return l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_DIALOG_TITLE); |
+} |
+ |
+GURL ChargerReplacementDialog::GetDialogContentURL() const { |
+ return GURL(chrome::kChromeUIChargerReplacementURL); |
+} |
+ |
+void ChargerReplacementDialog::GetWebUIMessageHandlers( |
+ std::vector<WebUIMessageHandler*>* handlers) const { |
+ handlers->push_back(charger_replacement_handler_); |
+} |
+ |
+void ChargerReplacementDialog::GetMinimumDialogSize(gfx::Size* size) const { |
+ size->SetSize(kMinDialogWidth, kMinDialogHeight); |
+} |
+ |
+void ChargerReplacementDialog::GetDialogSize(gfx::Size* size) const { |
+ size->SetSize(kDefaultDialogWidth, kDefaultDialogHeight); |
+} |
+ |
+std::string ChargerReplacementDialog::GetDialogArgs() const { |
+ ChargerReplacementHandler::SpringChargerStatus charger_status = |
+ ChargerReplacementHandler::GetChargerStatusPref(); |
+ if (charger_status == |
+ ChargerReplacementHandler::CONFIRM_NEW_CHARGER_ORDERED_ONLINE || |
+ charger_status == |
+ ChargerReplacementHandler::CONFIRM_ORDER_NEW_CHARGER_BY_PHONE) { |
+ return std::string(kNewChargerOrdered); |
+ } else { |
+ return std::string(kNewChargerNotOrdered); |
+ } |
+} |
+ |
+bool ChargerReplacementDialog::CanCloseDialog() const { |
+ return can_close_; |
+} |
+ |
+void ChargerReplacementDialog::OnDialogClosed(const std::string& json_retval) { |
+ delete this; |
+} |
+ |
+void ChargerReplacementDialog::OnCloseContents(WebContents* source, |
+ bool* out_close_dialog) { |
+ if (out_close_dialog) |
+ *out_close_dialog = true; |
+} |
+ |
+bool ChargerReplacementDialog::ShouldShowDialogTitle() const { |
+ return true; |
+} |
+ |
+bool ChargerReplacementDialog::HandleContextMenu( |
+ const content::ContextMenuParams& params) { |
+ // Disable context menu. |
+ return true; |
+} |
+ |
+} // namespace chromeos |