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

Unified Diff: remoting/client/ios/bridge/client_instance_unittest.mm

Issue 2829853003: Remove crufty bridge code from old CRD iOS app. (Closed)
Patch Set: Fix remoting/display proto import issue. Created 3 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
« no previous file with comments | « remoting/client/ios/bridge/client_instance.cc ('k') | remoting/client/ios/bridge/client_proxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/client/ios/bridge/client_instance_unittest.mm
diff --git a/remoting/client/ios/bridge/client_instance_unittest.mm b/remoting/client/ios/bridge/client_instance_unittest.mm
deleted file mode 100644
index d0e6a17595a8c6cffeb961828b38ac368df11d0b..0000000000000000000000000000000000000000
--- a/remoting/client/ios/bridge/client_instance_unittest.mm
+++ /dev/null
@@ -1,328 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "remoting/client/ios/bridge/client_instance.h"
-
-#import "remoting/client/ios/host_preferences.h"
-#import "testing/gtest_mac.h"
-
-#include "base/compiler_specific.h"
-#include "base/mac/scoped_nsobject.h"
-#include "base/run_loop.h"
-#include "base/strings/sys_string_conversions.h"
-#include "base/synchronization/waitable_event.h"
-#include "remoting/base/constants.h"
-#include "remoting/client/ios/bridge/client_proxy.h"
-#include "remoting/client/ios/bridge/client_proxy_delegate_wrapper.h"
-#include "remoting/proto/event.pb.h"
-#include "remoting/protocol/clipboard_stub.h"
-
-@interface ClientProxyDelegateForClientInstanceTester
- : NSObject<ClientProxyDelegate>
-
-- (void)resetDidReceiveSomething;
-
-// Validating what was received is outside of the scope for this test unit. See
-// ClientProxyUnittest for those tests.
-@property(nonatomic, assign) BOOL didReceiveSomething;
-
-@end
-
-@implementation ClientProxyDelegateForClientInstanceTester
-
-@synthesize didReceiveSomething = _didReceiveSomething;
-
-- (void)resetDidReceiveSomething {
- _didReceiveSomething = false;
-}
-
-- (void)requestHostPin:(BOOL)pairingSupported {
- _didReceiveSomething = true;
-}
-
-- (void)connected {
- _didReceiveSomething = true;
-}
-
-- (void)connectionStatus:(NSString*)statusMessage {
- _didReceiveSomething = true;
-}
-
-- (void)connectionFailed:(NSString*)errorMessage {
- _didReceiveSomething = true;
-}
-
-- (void)applyFrame:(const webrtc::DesktopSize&)size
- stride:(NSInteger)stride
- data:(uint8_t*)data
- rects:(const std::vector<webrtc::DesktopRect>&)rects {
- _didReceiveSomething = true;
-}
-
-- (void)applyCursor:(const webrtc::DesktopSize&)size
- hotspot:(const webrtc::DesktopVector&)hotspot
- cursorData:(uint8_t*)data {
- _didReceiveSomething = true;
-}
-
-@end
-
-namespace remoting {
-
-namespace {
-
-NSString* const kHostId = @"HostIdTest";
-NSString* const kPairingId = @"PairingIdTest";
-NSString* const kPairingSecret = @"PairingSecretTest";
-NSString* const kSecretPin = @"SecretPinTest";
-NSString* const kDeviceId = @"TestingDevice";
-
-// TODO(aboone) should be able to call RunLoop().RunUntilIdle() instead but
-// MessagePumpUIApplication::DoRun is marked NOTREACHED()
-void RunCFMessageLoop() {
- int result;
- do { // Repeat until no messages remain
- result = CFRunLoopRunInMode(
- kCFRunLoopDefaultMode,
- 0, // Execute queued messages, do not wait for additional messages
- YES); // Do only one message at a time
- } while (result != kCFRunLoopRunStopped && result != kCFRunLoopRunFinished &&
- result != kCFRunLoopRunTimedOut);
-}
-
-void SecretPinCallBack(const std::string& secret) {
- ASSERT_STREQ(base::SysNSStringToUTF8(kSecretPin).c_str(), secret.c_str());
-}
-
-} // namespace
-
-class ClientInstanceTest : public ::testing::Test {
- protected:
- void SetUp() override {
- testDelegate_.reset(
- [[ClientProxyDelegateForClientInstanceTester alloc] init]);
- proxy_.reset(new ClientProxy(
- [ClientProxyDelegateWrapper wrapDelegate:testDelegate_]));
- instance_ = new ClientInstance(proxy_->AsWeakPtr(), "", "", "", "", "");
- }
-
- void TearDown() override {
- // Ensure memory is not leaking
- // Notice Cleanup is safe to call, regardless of if Start() was ever called.
- instance_->Cleanup();
- RunCFMessageLoop();
- // An object on the network thread which owns a reference to |instance_| may
- // be cleaned up 'soon', but not immediately. Lets wait it out, up to 1
- // second.
- for (int i = 0; i < 100; i++) {
- if (!instance_->HasOneRef()) {
- [NSThread sleepForTimeInterval:.01];
- } else {
- break;
- }
- }
-
- // Remove the last reference from |instance_|, and destructor is called.
- ASSERT_TRUE(instance_->HasOneRef());
- instance_ = NULL;
- }
-
- void AssertAcknowledged(BOOL wasAcknowledged) {
- ASSERT_EQ(wasAcknowledged, [testDelegate_ didReceiveSomething]);
- // Reset for the next test
- [testDelegate_ resetDidReceiveSomething];
- }
-
- void TestStatusAndError(protocol::ConnectionToHost::State state,
- protocol::ErrorCode error) {
- instance_->OnConnectionState(state, error);
- AssertAcknowledged(true);
- }
-
- void TestConnectionStatus(protocol::ConnectionToHost::State state) {
- TestStatusAndError(state, protocol::ErrorCode::OK);
- TestStatusAndError(state, protocol::ErrorCode::PEER_IS_OFFLINE);
- TestStatusAndError(state, protocol::ErrorCode::SESSION_REJECTED);
- TestStatusAndError(state, protocol::ErrorCode::INCOMPATIBLE_PROTOCOL);
- TestStatusAndError(state, protocol::ErrorCode::AUTHENTICATION_FAILED);
- TestStatusAndError(state, protocol::ErrorCode::CHANNEL_CONNECTION_ERROR);
- TestStatusAndError(state, protocol::ErrorCode::SIGNALING_ERROR);
- TestStatusAndError(state, protocol::ErrorCode::SIGNALING_TIMEOUT);
- TestStatusAndError(state, protocol::ErrorCode::HOST_OVERLOAD);
- TestStatusAndError(state, protocol::ErrorCode::UNKNOWN_ERROR);
- }
-
- base::scoped_nsobject<ClientProxyDelegateForClientInstanceTester>
- testDelegate_;
- std::unique_ptr<ClientProxy> proxy_;
- scoped_refptr<ClientInstance> instance_;
-};
-
-TEST_F(ClientInstanceTest, Create) {
- // This is a test for memory leaking. Ensure a completely unused instance of
- // ClientInstance is destructed.
-
- ASSERT_TRUE(instance_.get() != NULL);
- ASSERT_TRUE(instance_->HasOneRef());
-}
-
-TEST_F(ClientInstanceTest, CreateAndStart) {
- // This is a test for memory leaking. Ensure a properly used instance of
- // ClientInstance is destructed.
-
- ASSERT_TRUE(instance_.get() != NULL);
- ASSERT_TRUE(instance_->HasOneRef());
-
- instance_->Start("", "");
- RunCFMessageLoop();
- ASSERT_TRUE(!instance_->HasOneRef()); // more than one
-}
-
-TEST_F(ClientInstanceTest, SecretPin) {
- NSString* hostId = kHostId;
- NSString* pairingId = kPairingId;
- NSString* pairingSecret = kPairingSecret;
-
- HostPreferences* newHost = [HostPreferences hostForId:hostId];
- newHost.pairId = pairingId;
- newHost.pairSecret = pairingSecret;
- [newHost saveToKeychain];
-
- // Suggesting that our pairing Id is known, but since it is not the correct
- // credentials expect the stored value to be discarded before requesting the
- // PIN.
- instance_ = new ClientInstance(proxy_->AsWeakPtr(), "", "", "",
- base::SysNSStringToUTF8(kHostId), "");
-
- instance_->Start(base::SysNSStringToUTF8(kPairingId),
- base::SysNSStringToUTF8(kPairingSecret));
- RunCFMessageLoop();
-
- instance_->FetchSecret(false, base::Bind(&SecretPinCallBack));
- RunCFMessageLoop();
- AssertAcknowledged(true);
-
- HostPreferences* host = [HostPreferences hostForId:hostId];
-
- // The pairing information was discarded.
- ASSERT_TRUE([host.pairId isEqualToString:@""]);
- ASSERT_TRUE([host.pairSecret isEqualToString:@""]);
-
- instance_->ProvideSecret(base::SysNSStringToUTF8(kSecretPin), false,
- base::SysNSStringToUTF8(kDeviceId));
- RunCFMessageLoop();
-}
-
-TEST_F(ClientInstanceTest, NoProxy) {
- // After the proxy is released, we still expect quite a few functions to be
- // able to run, but not produce any output. Some of these are just being
- // executed for code coverage, the outputs are not pertinent to this test
- // unit.
- proxy_.reset();
-
- instance_->Start("", "");
- RunCFMessageLoop();
-
- instance_->FetchSecret(false, base::Bind(&SecretPinCallBack));
- AssertAcknowledged(false);
-
- instance_->ProvideSecret(base::SysNSStringToUTF8(kSecretPin), false,
- base::SysNSStringToUTF8(kDeviceId));
- AssertAcknowledged(false);
-
- instance_->PerformMouseAction(webrtc::DesktopVector(0, 0),
- webrtc::DesktopVector(0, 0),
- (protocol::MouseEvent_MouseButton)0, false);
- AssertAcknowledged(false);
-
- instance_->PerformKeyboardAction(0, false);
- AssertAcknowledged(false);
-
- instance_->OnConnectionState(protocol::ConnectionToHost::State::CONNECTED,
- protocol::ErrorCode::OK);
- AssertAcknowledged(false);
-
- instance_->OnConnectionReady(false);
- AssertAcknowledged(false);
-
- instance_->OnRouteChanged("", protocol::TransportRoute());
- AssertAcknowledged(false);
-
- // SetCapabilities requires a host connection to be established
- // instance_->SetCapabilities("");
- // AssertAcknowledged(false);
-
- instance_->SetPairingResponse(protocol::PairingResponse());
- AssertAcknowledged(false);
-
- instance_->DeliverHostMessage(protocol::ExtensionMessage());
- AssertAcknowledged(false);
-
- ASSERT_TRUE(instance_->GetClipboardStub() != NULL);
- ASSERT_TRUE(instance_->GetCursorShapeStub() != NULL);
-
- protocol::ClipboardEvent event;
- event.set_mime_type(kMimeTypeTextUtf8);
- event.set_data("Test data.");
- instance_->InjectClipboardEvent(event);
- AssertAcknowledged(false);
-
- instance_->SetCursorShape(protocol::CursorShapeInfo());
- AssertAcknowledged(false);
-}
-
-TEST_F(ClientInstanceTest, OnConnectionStateINITIALIZING) {
- TestConnectionStatus(protocol::ConnectionToHost::State::INITIALIZING);
-}
-
-TEST_F(ClientInstanceTest, OnConnectionStateCONNECTING) {
- TestConnectionStatus(protocol::ConnectionToHost::State::CONNECTING);
-}
-
-TEST_F(ClientInstanceTest, OnConnectionStateAUTHENTICATED) {
- TestConnectionStatus(protocol::ConnectionToHost::State::AUTHENTICATED);
-}
-
-TEST_F(ClientInstanceTest, OnConnectionStateCONNECTED) {
- TestConnectionStatus(protocol::ConnectionToHost::State::CONNECTED);
-}
-
-TEST_F(ClientInstanceTest, OnConnectionStateFAILED) {
- TestConnectionStatus(protocol::ConnectionToHost::State::FAILED);
-}
-
-TEST_F(ClientInstanceTest, OnConnectionStateCLOSED) {
- TestConnectionStatus(protocol::ConnectionToHost::State::CLOSED);
-}
-
-TEST_F(ClientInstanceTest, OnConnectionReady) {
- instance_->OnConnectionReady(true);
- AssertAcknowledged(false);
- instance_->OnConnectionReady(false);
- AssertAcknowledged(false);
-}
-
-TEST_F(ClientInstanceTest, OnRouteChanged) {
- // Not expecting anything to happen
- protocol::TransportRoute route;
-
- route.type = protocol::TransportRoute::DIRECT;
- instance_->OnRouteChanged("", route);
- AssertAcknowledged(false);
-
- route.type = protocol::TransportRoute::STUN;
- instance_->OnRouteChanged("", route);
- AssertAcknowledged(false);
-
- route.type = protocol::TransportRoute::RELAY;
- instance_->OnRouteChanged("", route);
- AssertAcknowledged(false);
-}
-
-TEST_F(ClientInstanceTest, SetCursorShape) {
- instance_->SetCursorShape(protocol::CursorShapeInfo());
- AssertAcknowledged(true);
-}
-
-} // namespace remoting
« no previous file with comments | « remoting/client/ios/bridge/client_instance.cc ('k') | remoting/client/ios/bridge/client_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698