Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4473)

Unified Diff: chrome/browser/chromeos/enrollment_dialog_view.cc

Issue 10230012: This reduces so the enrollment dialog so it just spawns a tab. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix extension string Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/enrollment_dialog_view.cc
diff --git a/chrome/browser/chromeos/enrollment_dialog_view.cc b/chrome/browser/chromeos/enrollment_dialog_view.cc
index 28eb08772fd3f7a757a995540242fc508e3fcbcb..8f581c64cbd5e165638d195502d767e669846fb8 100644
--- a/chrome/browser/chromeos/enrollment_dialog_view.cc
+++ b/chrome/browser/chromeos/enrollment_dialog_view.cc
@@ -6,8 +6,13 @@
#include "base/bind.h"
#include "chrome/browser/chromeos/cros/network_library.h"
+#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/themes/theme_service.h"
+#include "chrome/browser/ui/views/extensions/extension_dialog.h"
+#include "chrome/browser/ui/views/extensions/extension_dialog_observer.h"
+#include "chrome/common/url_constants.h"
+#include "content/public/common/page_transition_types.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
@@ -30,120 +35,69 @@ namespace chromeos {
namespace {
// Default width/height of the dialog.
-const int kDefaultWidth = 640;
-const int kDefaultHeight = 480;
+const int kDefaultWidth = 400;
+const int kDefaultHeight = 200;
-// Border around the WebView
-const int kWebViewBorderSize = 1;
-
-// TODO(gspencer): Move this into ui/views/layout, perhaps just adding insets
-// to FillLayout.
-class BorderLayout : public LayoutManager {
+////////////////////////////////////////////////////////////////////////////////
+// Dialog for certificate enrollment. This displays the content from the
+// certificate enrollment URI.
+class EnrollmentDialogView : public views::DialogDelegateView {
public:
- explicit BorderLayout(const gfx::Insets& insets) : insets_(insets) {}
- virtual ~BorderLayout() {}
-
- // Overridden from LayoutManager:
- virtual void Layout(View* host) OVERRIDE {
- if (!host->has_children())
- return;
+ virtual ~EnrollmentDialogView();
- View* frame_view = host->child_at(0);
- frame_view->SetBounds(insets_.left(),
- insets_.top(),
- host->width() - insets_.right() - insets_.left(),
- host->height() - insets_.bottom() - insets_.top());
- }
+ static void ShowDialog(gfx::NativeWindow owning_window,
+ Profile* profile,
+ const GURL& target_uri,
+ const base::Closure& connect);
- virtual gfx::Size GetPreferredSize(View* host) OVERRIDE {
- DCHECK_EQ(1, host->child_count());
- gfx::Size child_size = host->child_at(0)->GetPreferredSize();
- child_size.Enlarge(insets_.left() + insets_.right(),
- insets_.top() + insets_.bottom());
- return child_size;
- }
+ // views::DialogDelegateView overrides
+ virtual int GetDialogButtons() const OVERRIDE;
+ virtual bool Accept() OVERRIDE;
- private:
- gfx::Insets insets_;
- DISALLOW_COPY_AND_ASSIGN(BorderLayout);
-};
+ // views::WidgetDelegate overrides
+ virtual ui::ModalType GetModalType() const OVERRIDE;
+ virtual string16 GetWindowTitle() const OVERRIDE;
-// Handler for certificate enrollment. This displays the content from the
-// certificate enrollment URI and listens for a certificate to be added. If a
-// certificate is added, then it invokes the closure to allow the network to
-// continue to connect.
-class DialogEnrollmentDelegate : public EnrollmentDelegate {
- public:
- // |owning_window| is the window that will own the dialog.
- explicit DialogEnrollmentDelegate(gfx::NativeWindow owning_window);
- virtual ~DialogEnrollmentDelegate();
+ // views::View overrides
+ virtual gfx::Size GetPreferredSize() OVERRIDE;
- // EnrollmentDelegate overrides
- virtual void Enroll(const std::vector<std::string>& uri_list,
- const base::Closure& connect) OVERRIDE;
+ // views::Widget overrides
+ virtual views::View* GetContentsView() OVERRIDE;
private:
- gfx::NativeWindow owning_window_;
-
- DISALLOW_COPY_AND_ASSIGN(DialogEnrollmentDelegate);
+ EnrollmentDialogView(Profile* profile,
+ const GURL& target_uri,
+ const base::Closure& connect);
+ void InitDialog();
+
+ Profile* profile_;
+ GURL target_uri_;
+ base::Closure connect_;
+ bool added_cert_;
};
-DialogEnrollmentDelegate::DialogEnrollmentDelegate(
- gfx::NativeWindow owning_window)
- : owning_window_(owning_window) {}
-
-DialogEnrollmentDelegate::~DialogEnrollmentDelegate() {}
-
-void DialogEnrollmentDelegate::Enroll(const std::vector<std::string>& uri_list,
- const base::Closure& connect) {
- // Keep the closure for later activation if we notice that
- // a certificate has been added.
- for (std::vector<std::string>::const_iterator iter = uri_list.begin();
- iter != uri_list.end(); ++iter) {
- GURL uri(*iter);
- if (uri.IsStandard() || uri.scheme() == "chrome-extension") {
- // If this is a "standard" scheme, like http, ftp, etc., then open that in
- // the enrollment dialog. If this is a chrome extension, then just open
- // that extension in a tab and let it provide any UI that it needs to
- // complete.
- EnrollmentDialogView::ShowDialog(owning_window_, uri, connect);
- return;
- }
- }
- // If we didn't find a scheme we could handle, then don't continue connecting.
- // TODO(gspencer): provide a path to display this failure to the user.
- VLOG(1) << "Couldn't find usable scheme in enrollment URI(s)";
-}
-
-} // namespace
-
////////////////////////////////////////////////////////////////////////////////
// EnrollmentDialogView implementation.
-EnrollmentDialogView::EnrollmentDialogView(const GURL& target_uri,
+EnrollmentDialogView::EnrollmentDialogView(Profile* profile,
+ const GURL& target_uri,
const base::Closure& connect)
- : target_uri_(target_uri),
+ : profile_(profile),
+ target_uri_(target_uri),
connect_(connect),
added_cert_(false) {
- net::CertDatabase::AddObserver(this);
}
EnrollmentDialogView::~EnrollmentDialogView() {
- net::CertDatabase::RemoveObserver(this);
-}
-
-// static
-EnrollmentDelegate* EnrollmentDialogView::CreateEnrollmentDelegate(
- gfx::NativeWindow owning_window) {
- return new DialogEnrollmentDelegate(owning_window);
}
// static
void EnrollmentDialogView::ShowDialog(gfx::NativeWindow owning_window,
+ Profile* profile,
const GURL& target_uri,
const base::Closure& connect) {
EnrollmentDialogView* dialog_view =
- new EnrollmentDialogView(target_uri, connect);
+ new EnrollmentDialogView(profile, target_uri, connect);
views::Widget::CreateWindowWithParent(dialog_view, owning_window);
dialog_view->InitDialog();
views::Widget* widget = dialog_view->GetWidget();
@@ -151,17 +105,22 @@ void EnrollmentDialogView::ShowDialog(gfx::NativeWindow owning_window,
widget->Show();
}
-void EnrollmentDialogView::Close() {
- GetWidget()->Close();
-}
-
int EnrollmentDialogView::GetDialogButtons() const {
- return ui::DIALOG_BUTTON_CANCEL;
+ return ui::DIALOG_BUTTON_CANCEL | ui::DIALOG_BUTTON_OK;
}
-void EnrollmentDialogView::OnClose() {
- if (added_cert_)
- connect_.Run();
+bool EnrollmentDialogView::Accept() {
+ // Navigate to the target URI in a browser tab.
+ Browser* browser = BrowserList::FindTabbedBrowser(profile_, false);
+ if (!browser) {
+ // Couldn't find a tabbed browser: create one.
+ browser = Browser::Create(profile_);
+ }
+ DCHECK(browser);
+ browser->AddSelectedTabWithURL(
+ target_uri_,
+ content::PAGE_TRANSITION_LINK);
+ return true;
}
ui::ModalType EnrollmentDialogView::GetModalType() const {
@@ -180,42 +139,17 @@ views::View* EnrollmentDialogView::GetContentsView() {
return this;
}
-void EnrollmentDialogView::OnUserCertAdded(
- const net::X509Certificate* cert) {
- added_cert_ = true;
- Close();
-}
-
void EnrollmentDialogView::InitDialog() {
added_cert_ = false;
// Create the views and layout manager and set them up.
Label* label = new Label(
- l10n_util::GetStringUTF16(
- IDS_NETWORK_ENROLLMENT_HANDLER_EMBEDDED_ENROLL));
+ l10n_util::GetStringUTF16(IDS_NETWORK_ENROLLMENT_HANDLER_TAB_ENROLL));
label->SetFont(
ResourceBundle::GetSharedInstance().GetFont(ResourceBundle::BaseFont));
label->SetHorizontalAlignment(Label::ALIGN_LEFT);
label->SetMultiLine(true);
label->SetAllowCharacterBreak(true);
- // In order to get a border that shows around the WebView, we need to embed it
- // into another view because it hosts a native window that fills the view.
- View* web_view_border_view = new View();
- web_view_border_view->SetLayoutManager(
- new BorderLayout(gfx::Insets(kWebViewBorderSize,
- kWebViewBorderSize,
- kWebViewBorderSize,
- kWebViewBorderSize)));
- SkColor frame_color = ThemeService::GetDefaultColor(
- ThemeService::COLOR_FRAME);
- Border* border = views::Border::CreateSolidBorder(kWebViewBorderSize,
- frame_color);
- web_view_border_view->set_border(border);
- views::WebView* web_view =
- new views::WebView(ProfileManager::GetLastUsedProfile());
- web_view_border_view->AddChildView(web_view);
- web_view->SetVisible(true);
-
GridLayout* grid_layout = GridLayout::CreatePanel(this);
SetLayoutManager(grid_layout);
@@ -226,8 +160,6 @@ void EnrollmentDialogView::InitDialog() {
views::GridLayout::USE_PREF, // Size type.
0, // Ignored for USE_PREF.
0); // Minimum size.
- // Add a column set for aligning the text when it has no icons (such as the
- // help center link).
columns = grid_layout->AddColumnSet(1);
columns->AddPaddingColumn(
0, views::kUnrelatedControlHorizontalSpacing);
@@ -241,11 +173,70 @@ void EnrollmentDialogView::InitDialog() {
grid_layout->StartRow(0, 0);
grid_layout->AddView(label);
grid_layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
- grid_layout->StartRow(100.0f, 0);
- grid_layout->AddView(web_view_border_view);
- grid_layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
grid_layout->Layout(this);
- web_view->LoadInitialURL(target_uri_);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Handler for certificate enrollment.
+
+class DialogEnrollmentDelegate : public EnrollmentDelegate {
+ public:
+ // |owning_window| is the window that will own the dialog.
+ explicit DialogEnrollmentDelegate(gfx::NativeWindow owning_window,
+ Profile* profile);
+ virtual ~DialogEnrollmentDelegate();
+
+ // EnrollmentDelegate overrides
+ virtual void Enroll(const std::vector<std::string>& uri_list,
+ const base::Closure& connect) OVERRIDE;
+
+ private:
+ gfx::NativeWindow owning_window_;
+ Profile* profile_;
+
+ DISALLOW_COPY_AND_ASSIGN(DialogEnrollmentDelegate);
+};
+
+DialogEnrollmentDelegate::DialogEnrollmentDelegate(
+ gfx::NativeWindow owning_window,
+ Profile* profile) : owning_window_(owning_window), profile_(profile) {}
+
+DialogEnrollmentDelegate::~DialogEnrollmentDelegate() {}
+
+void DialogEnrollmentDelegate::Enroll(const std::vector<std::string>& uri_list,
+ const base::Closure& connect) {
+ // Keep the closure for later activation if we notice that
+ // a certificate has been added.
+
+ // TODO(gspencer): Do something smart with the closure. At the moment it is
+ // being ignored because we don't know when the enrollment tab is closed.
+ // http://crosbug.com/30422
+ for (std::vector<std::string>::const_iterator iter = uri_list.begin();
+ iter != uri_list.end(); ++iter) {
+ GURL uri(*iter);
+ if (uri.IsStandard() || uri.scheme() == chrome::kExtensionScheme) {
+ // If this is a "standard" scheme, like http, ftp, etc., then open that in
+ // the enrollment dialog.
+ EnrollmentDialogView::ShowDialog(owning_window_, profile_, uri, connect);
+ return;
+ }
+ }
+
+ // If we didn't find a scheme we could handle, then don't continue connecting.
+ // TODO(gspencer): provide a path to display this failure to the user. (but
+ // for the most part they won't know what it means, since it's probably coming
+ // from a policy-pushed ONC file).
+ VLOG(1) << "Couldn't find usable scheme in enrollment URI(s)";
+}
+
+} // namespace
+
+////////////////////////////////////////////////////////////////////////////////
+// Factory function.
+
+EnrollmentDelegate* CreateEnrollmentDelegate(gfx::NativeWindow owning_window,
+ Profile* profile) {
+ return new DialogEnrollmentDelegate(owning_window, profile);
}
} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/enrollment_dialog_view.h ('k') | chrome/browser/chromeos/options/vpn_config_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698