Chromium Code Reviews| Index: remoting/host/disconnect_window_mac.mm |
| diff --git a/remoting/host/disconnect_window_mac.mm b/remoting/host/disconnect_window_mac.mm |
| index bc3015afed7c9af0cd44e10954e79c3914d23274..7fdb2504f2e02cc7cd85df0ad0cef0b4bdcc6e25 100644 |
| --- a/remoting/host/disconnect_window_mac.mm |
| +++ b/remoting/host/disconnect_window_mac.mm |
| @@ -6,10 +6,13 @@ |
| #import "remoting/host/disconnect_window_mac.h" |
| +#include "base/bind.h" |
| #include "base/compiler_specific.h" |
| +#include "base/memory/weak_ptr.h" |
| #include "base/string_util.h" |
| #include "base/strings/sys_string_conversions.h" |
| -#include "remoting/host/disconnect_window.h" |
| +#include "remoting/host/client_session_control.h" |
| +#include "remoting/host/host_window.h" |
| #include "remoting/host/ui_strings.h" |
| @interface DisconnectWindowController() |
| @@ -17,58 +20,66 @@ |
| - (void)Hide; |
| @end |
| +const int kMaximumConnectedNameWidthInPixels = 400; |
| + |
| namespace remoting { |
| -class DisconnectWindowMac : public remoting::DisconnectWindow { |
| +class DisconnectWindowMac : public HostWindow { |
| public: |
| - explicit DisconnectWindowMac(const UiStrings* ui_strings); |
| + explicit DisconnectWindowMac(const UiStrings& ui_strings); |
| virtual ~DisconnectWindowMac(); |
| - virtual bool Show(const base::Closure& disconnect_callback, |
| - const std::string& username) OVERRIDE; |
| - virtual void Hide() OVERRIDE; |
| + // HostWindow overrides. |
| + virtual void Start( |
| + const base::WeakPtr<ClientSessionControl>& client_session_control) |
| + OVERRIDE; |
| private: |
| - DisconnectWindowController* window_controller_; |
| + // Localized UI strings. |
| + UiStrings ui_strings_; |
| - // Points to the localized strings. |
| - const UiStrings* ui_strings_; |
| + DisconnectWindowController* window_controller_; |
| DISALLOW_COPY_AND_ASSIGN(DisconnectWindowMac); |
| }; |
| -DisconnectWindowMac::DisconnectWindowMac(const UiStrings* ui_strings) |
| - : window_controller_(nil), |
| - ui_strings_(ui_strings) { |
| +DisconnectWindowMac::DisconnectWindowMac(const UiStrings& ui_strings) |
| + : ui_strings_(ui_strings), |
| + window_controller_(NULL) { |
|
Sergey Ulanov
2013/04/04 00:10:03
s/NULL/nil/
alexeypa (please no reviews)
2013/04/04 16:56:40
Done.
|
| } |
| DisconnectWindowMac::~DisconnectWindowMac() { |
| - Hide(); |
| -} |
| + DCHECK(CalledOnValidThread()); |
| -bool DisconnectWindowMac::Show(const base::Closure& disconnect_callback, |
| - const std::string& username) { |
| - DCHECK(!disconnect_callback.is_null()); |
| - DCHECK(window_controller_ == nil); |
| + // DisconnectWindowController is responsible for releasing itself in its |
| + // windowWillClose: method. |
| + [window_controller_ Hide]; |
| + window_controller_ = nil; |
| +} |
| +void DisconnectWindowMac::Start( |
| + const base::WeakPtr<ClientSessionControl>& client_session_control) { |
| + DCHECK(CalledOnValidThread()); |
| + DCHECK(client_session_control); |
| + DCHECK(!disconnect_window_); |
| + |
| + // Create the window. |
| + base::Closure disconnect_callback = |
| + base::Bind(&ClientSessionControl::DisconnectSession, |
| + client_session_control); |
| + std::string client_jid = client_session_control->client_jid(); |
| + std::string username = client_jid.substr(0, client_jid.find('/')); |
| window_controller_ = |
| - [[DisconnectWindowController alloc] initWithUiStrings:ui_strings_ |
| + [[DisconnectWindowController alloc] initWithUiStrings:&ui_strings_ |
| callback:disconnect_callback |
| username:username]; |
| [window_controller_ showWindow:nil]; |
| - return true; |
| -} |
| - |
| -void DisconnectWindowMac::Hide() { |
| - // DisconnectWindowController is responsible for releasing itself in its |
| - // windowWillClose: method. |
| - [window_controller_ Hide]; |
| - window_controller_ = nil; |
| } |
| -scoped_ptr<DisconnectWindow> DisconnectWindow::Create( |
| - const UiStrings* ui_strings) { |
| - return scoped_ptr<DisconnectWindow>(new DisconnectWindowMac(ui_strings)); |
| +// static |
| +scoped_ptr<HostWindow> HostWindow::CreateDisconnectWindow( |
| + const UiStrings& ui_strings) { |
| + return scoped_ptr<HostWindow>(new DisconnectWindowMac(ui_strings)); |
| } |
| } // namespace remoting |
| @@ -120,10 +131,8 @@ scoped_ptr<DisconnectWindow> DisconnectWindow::Create( |
| CGFloat newConnectedWidth = NSWidth(connectedToFrame); |
| // Set a max width for the connected to text field. |
| - if (newConnectedWidth > |
| - remoting::DisconnectWindow::kMaximumConnectedNameWidthInPixels) { |
| - newConnectedWidth |
| - = remoting::DisconnectWindow::kMaximumConnectedNameWidthInPixels; |
| + if (newConnectedWidth > kMaximumConnectedNameWidthInPixels) { |
| + newConnectedWidth = kMaximumConnectedNameWidthInPixels; |
| connectedToFrame.size.width = newConnectedWidth; |
| [connectedToField_ setFrame:connectedToFrame]; |
| } |