Home | History | Annotate | Download | only in bluetooth
      1 // Copyright (c) 2012 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/bluetooth/bluetooth_pairing_dialog.h"
      6 
      7 #include "base/json/json_writer.h"
      8 #include "chrome/browser/profiles/profile_manager.h"
      9 #include "chrome/browser/ui/browser_dialogs.h"
     10 #include "chrome/common/url_constants.h"
     11 #include "device/bluetooth/bluetooth_device.h"
     12 #include "grit/generated_resources.h"
     13 #include "ui/base/l10n/l10n_util.h"
     14 #include "ui/gfx/size.h"
     15 
     16 using content::WebContents;
     17 using content::WebUIMessageHandler;
     18 
     19 namespace chromeos {
     20 
     21 namespace {
     22 
     23 // Default width/height ratio of screen size.
     24 const int kDefaultWidth = 480;
     25 const int kDefaultHeight = 280;
     26 
     27 }  // namespace
     28 
     29 ///////////////////////////////////////////////////////////////////////////////
     30 // BluetoothPairingDialog, public:
     31 
     32 BluetoothPairingDialog::BluetoothPairingDialog(
     33     gfx::NativeWindow parent_window,
     34     const device::BluetoothDevice* device)
     35     : parent_window_(parent_window) {
     36   device_data_.SetString("address", device->GetAddress());
     37   device_data_.SetString("name", device->GetName());
     38   device_data_.SetBoolean("paired", device->IsPaired());
     39   device_data_.SetBoolean("connected", device->IsConnected());
     40 }
     41 
     42 BluetoothPairingDialog::~BluetoothPairingDialog() {
     43 }
     44 
     45 void BluetoothPairingDialog::Show() {
     46   chrome::ShowWebDialog(parent_window_,
     47                         ProfileManager::GetDefaultProfile(),
     48                         this);
     49 }
     50 
     51 ///////////////////////////////////////////////////////////////////////////////
     52 // LoginWebDialog, protected:
     53 
     54 ui::ModalType BluetoothPairingDialog::GetDialogModalType() const {
     55   return ui::MODAL_TYPE_SYSTEM;
     56 }
     57 
     58 base::string16 BluetoothPairingDialog::GetDialogTitle() const {
     59   return l10n_util::GetStringUTF16(
     60       IDS_OPTIONS_SETTINGS_BLUETOOTH_ADD_DEVICE_TITLE);
     61 }
     62 
     63 GURL BluetoothPairingDialog::GetDialogContentURL() const {
     64   return GURL(chrome::kChromeUIBluetoothPairingURL);
     65 }
     66 
     67 void BluetoothPairingDialog::GetWebUIMessageHandlers(
     68     std::vector<WebUIMessageHandler*>* handlers) const {
     69 }
     70 
     71 void BluetoothPairingDialog::GetDialogSize(gfx::Size* size) const {
     72   size->SetSize(kDefaultWidth, kDefaultHeight);
     73 }
     74 
     75 std::string BluetoothPairingDialog::GetDialogArgs() const {
     76   std::string data;
     77   base::JSONWriter::Write(&device_data_, &data);
     78   return data;
     79 }
     80 
     81 void BluetoothPairingDialog::OnDialogClosed(const std::string& json_retval) {
     82   delete this;
     83 }
     84 
     85 void BluetoothPairingDialog::OnCloseContents(WebContents* source,
     86                                              bool* out_close_dialog) {
     87   if (out_close_dialog)
     88     *out_close_dialog = true;
     89 }
     90 
     91 bool BluetoothPairingDialog::ShouldShowDialogTitle() const {
     92   return true;
     93 }
     94 
     95 bool BluetoothPairingDialog::HandleContextMenu(
     96     const content::ContextMenuParams& params) {
     97   // Disable context menu.
     98   return true;
     99 }
    100 
    101 }  // namespace chromeos
    102