1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/app_mode/certificate_manager_dialog.h"
6
7#include "base/strings/utf_string_conversions.h"
8#include "chrome/browser/chromeos/login/helper.h"
9#include "chrome/browser/profiles/profile_manager.h"
10#include "chrome/browser/ui/browser_dialogs.h"
11#include "chrome/common/url_constants.h"
12#include "chrome/grit/generated_resources.h"
13#include "content/public/browser/browser_thread.h"
14#include "ui/base/l10n/l10n_util.h"
15#include "ui/gfx/rect.h"
16#include "ui/gfx/size.h"
17#include "ui/views/controls/webview/web_dialog_view.h"
18
19namespace {
20
21// Hints for size of certificate manager dialog.
22const int kCertificateManagerDialogReasonableWidth = 712;
23const int kCertificateManagerDialogReasonableHeight = 412;
24const float kCertificateManagerDialogReasonableWidthRatio = 0.4f;
25const float kCertificateManagerDialogReasonableHeightRatio = 0.4f;
26
27int CalculateSize(int screen_size, int min_comfortable, float desired_ratio) {
28  int desired_size = static_cast<int>(desired_ratio * screen_size);
29  desired_size = std::max(min_comfortable, desired_size);
30  return std::min(screen_size, desired_size);
31}
32
33}  // namespace
34
35namespace chromeos {
36
37CertificateManagerDialog::CertificateManagerDialog(
38    Profile* profile,
39    LoginWebDialog::Delegate* delegate,
40    gfx::NativeWindow window)
41    : LoginWebDialog(profile,
42                     delegate,
43                     window,
44                     base::string16(),
45                     GURL(chrome::kChromeUICertificateManagerDialogURL),
46                     LoginWebDialog::STYLE_BUBBLE) {
47  DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
48
49  gfx::Rect screen_bounds(chromeos::CalculateScreenBounds(gfx::Size()));
50  SetDialogSize(CalculateSize(screen_bounds.width(),
51                              kCertificateManagerDialogReasonableWidth,
52                              kCertificateManagerDialogReasonableWidthRatio),
53                CalculateSize(screen_bounds.height(),
54                              kCertificateManagerDialogReasonableHeight,
55                              kCertificateManagerDialogReasonableHeightRatio));
56
57  SetDialogTitle(l10n_util::GetStringUTF16(IDS_CERTIFICATE_MANAGER_TITLE));
58}
59
60CertificateManagerDialog::~CertificateManagerDialog() {
61}
62
63
64}  // namespace chromeos
65