Index: chrome/browser/chromeos/net/network_portal_web_dialog.cc |
diff --git a/chrome/browser/chromeos/net/network_portal_web_dialog.cc b/chrome/browser/chromeos/net/network_portal_web_dialog.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..28a611a4e15d8af5702995de1c92ef387add804e |
--- /dev/null |
+++ b/chrome/browser/chromeos/net/network_portal_web_dialog.cc |
@@ -0,0 +1,105 @@ |
+// Copyright 2014 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/net/network_portal_web_dialog.h" |
+ |
+#include "ash/shell.h" |
+#include "chrome/grit/generated_resources.h" |
+#include "components/captive_portal/captive_portal_detector.h" |
+#include "ui/base/l10n/l10n_util.h" |
+#include "ui/base/ui_base_types.h" |
+#include "ui/gfx/display.h" |
+#include "ui/gfx/size.h" |
+#include "ui/views/widget/widget.h" |
+#include "url/gurl.h" |
+ |
+namespace { |
+ |
+const float kNetworkPortalWebDialogWidthFraction = .8; |
+const float kNetworkPortalWebDialogHeightFraction = .8; |
+ |
+gfx::Size GetPortalDialogSize() { |
+ const gfx::Display display = ash::Shell::GetScreen()->GetPrimaryDisplay(); |
+ |
+ gfx::Size display_size = display.size(); |
+ |
+ if (display.rotation() == gfx::Display::ROTATE_90 || |
+ display.rotation() == gfx::Display::ROTATE_270) { |
+ display_size = gfx::Size(display_size.height(), display_size.width()); |
+ } |
+ |
+ display_size = |
+ gfx::Size(display_size.width() * kNetworkPortalWebDialogWidthFraction, |
+ display_size.height() * kNetworkPortalWebDialogHeightFraction); |
+ |
+ return display_size; |
+} |
+ |
+} // namespace |
+ |
+namespace chromeos { |
+ |
+NetworkPortalWebDialog::NetworkPortalWebDialog( |
+ base::WeakPtr<NetworkPortalNotificationController> controller) |
+ : controller_(controller), widget_(nullptr) { |
+} |
+ |
+NetworkPortalWebDialog::~NetworkPortalWebDialog() { |
+ if (controller_) |
+ controller_->OnDialogDestroyed(this); |
+} |
+ |
+void NetworkPortalWebDialog::Close() { |
+ if (widget_) |
+ widget_->Close(); |
+} |
+ |
+void NetworkPortalWebDialog::SetWidget(views::Widget* widget) { |
+ widget_ = widget; |
+} |
+ |
+ui::ModalType NetworkPortalWebDialog::GetDialogModalType() const { |
+ return ui::MODAL_TYPE_SYSTEM; |
+} |
+ |
+base::string16 NetworkPortalWebDialog::GetDialogTitle() const { |
+ return l10n_util::GetStringUTF16( |
+ IDS_CAPTIVE_PORTAL_AUTHORIZATION_DIALOG_NAME); |
+} |
+ |
+GURL NetworkPortalWebDialog::GetDialogContentURL() const { |
+ return GURL(captive_portal::CaptivePortalDetector::kDefaultURL); |
+} |
+ |
+void NetworkPortalWebDialog::GetWebUIMessageHandlers( |
+ std::vector<content::WebUIMessageHandler*>* handlers) const { |
+} |
+ |
+void NetworkPortalWebDialog::GetDialogSize(gfx::Size* size) const { |
+ *size = GetPortalDialogSize(); |
+} |
+ |
+std::string NetworkPortalWebDialog::GetDialogArgs() const { |
+ return std::string(); |
+} |
+ |
+bool NetworkPortalWebDialog::CanResizeDialog() const { |
+ return false; |
+} |
+ |
+void NetworkPortalWebDialog::OnDialogClosed(const std::string& json_retval) { |
+ delete this; |
+} |
+ |
+void NetworkPortalWebDialog::OnCloseContents(content::WebContents* /* source */, |
+ bool* out_close_dialog) { |
+ if (out_close_dialog) |
+ *out_close_dialog = true; |
+} |
+ |
+bool NetworkPortalWebDialog::ShouldShowDialogTitle() const { |
+ return true; |
+} |
+ |
+} // namespace chromeos |