Home | History | Annotate | Download | only in chromeos
      1 // Copyright (c) 2011 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/choose_mobile_network_dialog.h"
      6 
      7 #include "chrome/browser/chromeos/frame/bubble_window.h"
      8 #include "chrome/browser/chromeos/login/user_manager.h"
      9 #include "chrome/browser/profiles/profile_manager.h"
     10 #include "chrome/browser/ui/browser.h"
     11 #include "chrome/browser/ui/browser_list.h"
     12 #include "chrome/browser/ui/views/html_dialog_view.h"
     13 #include "chrome/common/url_constants.h"
     14 
     15 namespace {
     16 
     17 // Default width/height of the dialog.
     18 const int kDefaultWidth = 350;
     19 const int kDefaultHeight = 225;
     20 
     21 // Custom HtmlDialogView with disabled context menu.
     22 class HtmlDialogWithoutContextMenuView : public HtmlDialogView {
     23  public:
     24   HtmlDialogWithoutContextMenuView(Profile* profile,
     25                                    HtmlDialogUIDelegate* delegate)
     26       : HtmlDialogView(profile, delegate) {}
     27 
     28   // TabContentsDelegate implementation.
     29   bool HandleContextMenu(const ContextMenuParams& params) {
     30     // Disable context menu.
     31     return true;
     32   }
     33 };
     34 
     35 }  // namespace
     36 
     37 namespace chromeos {
     38 
     39 // static
     40 void ChooseMobileNetworkDialog::ShowDialog(gfx::NativeWindow owning_window) {
     41   Profile* profile;
     42   if (UserManager::Get()->user_is_logged_in()) {
     43     Browser* browser = BrowserList::GetLastActive();
     44     DCHECK(browser);
     45     profile = browser->profile();
     46   } else {
     47     profile = ProfileManager::GetDefaultProfile();
     48   }
     49   HtmlDialogView* html_view = new HtmlDialogWithoutContextMenuView(
     50       profile, new ChooseMobileNetworkDialog);
     51   html_view->InitDialog();
     52   chromeos::BubbleWindow::Create(owning_window,
     53                                  gfx::Rect(),
     54                                  chromeos::BubbleWindow::STYLE_GENERIC,
     55                                  html_view);
     56   html_view->window()->Show();
     57 }
     58 
     59 ChooseMobileNetworkDialog::ChooseMobileNetworkDialog() {
     60 }
     61 
     62 bool ChooseMobileNetworkDialog::IsDialogModal() const {
     63   return true;
     64 }
     65 
     66 std::wstring ChooseMobileNetworkDialog::GetDialogTitle() const {
     67   return std::wstring();
     68 }
     69 
     70 GURL ChooseMobileNetworkDialog::GetDialogContentURL() const {
     71   return GURL(chrome::kChromeUIChooseMobileNetworkURL);
     72 }
     73 
     74 void ChooseMobileNetworkDialog::GetWebUIMessageHandlers(
     75     std::vector<WebUIMessageHandler*>* handlers) const {
     76 }
     77 
     78 void ChooseMobileNetworkDialog::GetDialogSize(gfx::Size* size) const {
     79   size->SetSize(kDefaultWidth, kDefaultHeight);
     80 }
     81 
     82 std::string ChooseMobileNetworkDialog::GetDialogArgs() const {
     83   return "[]";
     84 }
     85 
     86 void ChooseMobileNetworkDialog::OnDialogClosed(const std::string& json_retval) {
     87   delete this;
     88 }
     89 
     90 void ChooseMobileNetworkDialog::OnCloseContents(TabContents* source,
     91                                                 bool* out_close_dialog) {
     92   if (out_close_dialog)
     93     *out_close_dialog = true;
     94 }
     95 
     96 bool ChooseMobileNetworkDialog::ShouldShowDialogTitle() const {
     97   return false;
     98 }
     99 
    100 }  // namespace chromeos
    101