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..164c0649e1f2cdb1927dc40a64266bbf6806004a |
--- /dev/null |
+++ b/chrome/browser/chromeos/net/network_portal_web_dialog.cc |
@@ -0,0 +1,102 @@ |
+// 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 "components/captive_portal/captive_portal_detector.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_(NULL) { |
ygorshenin1
2014/11/26 16:33:50
nit: s/NULL/nullptr/g
Alexander Alekseev
2014/11/26 17:51:00
Done.
|
+} |
+ |
+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 base::string16(); |
+} |
+ |
+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 |