blob: 39c6541b9e42b845e939c0d9d0d998c8420e01e0 [file] [log] [blame]
dcaiafa3a5e7282015-01-06 21:21:191// 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
joedowb1b8dca2016-09-12 17:03:245#include <memory>
6#include <string>
7
dcaiafa3a5e7282015-01-06 21:21:198#include "base/bind.h"
joedowb1b8dca2016-09-12 17:03:249#include "base/callback.h"
dcaiafa3a5e7282015-01-06 21:21:1910#include "base/callback_helpers.h"
joedowb1b8dca2016-09-12 17:03:2411#include "base/i18n/message_formatter.h"
avic5960f32015-12-22 22:49:4812#include "base/macros.h"
joedow7cc2c862016-09-13 16:05:5713#include "base/memory/ptr_util.h"
joedowb1b8dca2016-09-12 17:03:2414#include "base/strings/utf_string_conversions.h"
dcaiafa3a5e7282015-01-06 21:21:1915#include "remoting/base/string_resources.h"
16#include "remoting/host/chromeos/message_box.h"
17#include "remoting/host/it2me/it2me_confirmation_dialog.h"
18#include "ui/base/l10n/l10n_util.h"
19
20namespace remoting {
21
22class It2MeConfirmationDialogChromeOS : public It2MeConfirmationDialog {
23 public:
24 It2MeConfirmationDialogChromeOS();
25 ~It2MeConfirmationDialogChromeOS() override;
26
27 // It2MeConfirmationDialog implementation.
joedowb1b8dca2016-09-12 17:03:2428 void Show(const std::string& remote_user_email,
29 const ResultCallback& callback) override;
dcaiafa3a5e7282015-01-06 21:21:1930
31 private:
32 // Handles result from |message_box_|.
33 void OnMessageBoxResult(MessageBox::Result result);
34
dcheng0765c492016-04-06 22:41:5335 std::unique_ptr<MessageBox> message_box_;
dcaiafa3a5e7282015-01-06 21:21:1936 ResultCallback callback_;
37
38 DISALLOW_COPY_AND_ASSIGN(It2MeConfirmationDialogChromeOS);
39};
40
Chris Watkins6fe52aa2017-11-28 03:24:0541It2MeConfirmationDialogChromeOS::It2MeConfirmationDialogChromeOS() = default;
dcaiafa3a5e7282015-01-06 21:21:1942
Chris Watkins6fe52aa2017-11-28 03:24:0543It2MeConfirmationDialogChromeOS::~It2MeConfirmationDialogChromeOS() = default;
dcaiafa3a5e7282015-01-06 21:21:1944
joedowb1b8dca2016-09-12 17:03:2445void It2MeConfirmationDialogChromeOS::Show(const std::string& remote_user_email,
46 const ResultCallback& callback) {
47 DCHECK(!remote_user_email.empty());
dcaiafa3a5e7282015-01-06 21:21:1948 callback_ = callback;
49
kelvinp8607d9d2017-01-27 03:33:5250 message_box_ = base::MakeUnique<MessageBox>(
dcaiafa3a5e7282015-01-06 21:21:1951 l10n_util::GetStringUTF16(IDS_MODE_IT2ME),
joedowb1b8dca2016-09-12 17:03:2452 base::i18n::MessageFormatter::FormatWithNumberedArgs(
53 l10n_util::GetStringUTF16(
54 IDS_SHARE_CONFIRM_DIALOG_MESSAGE_WITH_USERNAME),
55 base::UTF8ToUTF16(remote_user_email)),
dcaiafa3a5e7282015-01-06 21:21:1956 l10n_util::GetStringUTF16(IDS_SHARE_CONFIRM_DIALOG_CONFIRM),
57 l10n_util::GetStringUTF16(IDS_SHARE_CONFIRM_DIALOG_DECLINE),
58 base::Bind(&It2MeConfirmationDialogChromeOS::OnMessageBoxResult,
kelvinp8607d9d2017-01-27 03:33:5259 base::Unretained(this)));
dcaiafa3a5e7282015-01-06 21:21:1960}
61
62void It2MeConfirmationDialogChromeOS::OnMessageBoxResult(
63 MessageBox::Result result) {
dcaiafa3a5e7282015-01-06 21:21:1964 base::ResetAndReturn(&callback_).Run(result == MessageBox::OK ?
65 Result::OK : Result::CANCEL);
66}
67
joedowd15dc6a2017-03-20 16:52:2668std::unique_ptr<It2MeConfirmationDialog>
69It2MeConfirmationDialogFactory::Create() {
joedow7cc2c862016-09-13 16:05:5770 return base::MakeUnique<It2MeConfirmationDialogChromeOS>();
dcaiafa3a5e7282015-01-06 21:21:1971}
72
73} // namespace remoting