Chromium Code Reviews| Index: ios/chrome/browser/ui/activity_services/activity_service_controller_unittest.mm |
| diff --git a/ios/chrome/browser/ui/activity_services/activity_service_controller_unittest.mm b/ios/chrome/browser/ui/activity_services/activity_service_controller_unittest.mm |
| index 187bd7dac613c58c1f901573b5932d50e0e825e9..102532b374c0daf061d41ec7cd7395331f0cecc2 100644 |
| --- a/ios/chrome/browser/ui/activity_services/activity_service_controller_unittest.mm |
| +++ b/ios/chrome/browser/ui/activity_services/activity_service_controller_unittest.mm |
| @@ -6,7 +6,6 @@ |
| #import <MobileCoreServices/MobileCoreServices.h> |
| -#include "base/mac/scoped_nsobject.h" |
| #import "base/test/ios/wait_util.h" |
| #include "components/reading_list/core/reading_list_switches.h" |
| #import "ios/chrome/browser/ui/activity_services/activity_type_util.h" |
| @@ -20,6 +19,10 @@ |
| #import "third_party/ocmock/OCMock/OCMock.h" |
| #import "third_party/ocmock/gtest_support.h" |
| +#if !defined(__has_feature) || !__has_feature(objc_arc) |
| +#error "This file requires ARC support." |
| +#endif |
| + |
| @interface ActivityServiceController (CrVisibleForTesting) |
| - (NSArray*)activityItemsForData:(ShareToData*)data; |
| - (NSArray*)applicationActivitiesForData:(ShareToData*)data |
| @@ -37,18 +40,18 @@ class ActivityServiceControllerTest : public PlatformTest { |
| protected: |
| void SetUp() override { |
| PlatformTest::SetUp(); |
| - parentController_.reset( |
| - [[UIViewController alloc] initWithNibName:nil bundle:nil]); |
| + parentController_ = |
| + [[UIViewController alloc] initWithNibName:nil bundle:nil]; |
| [[UIApplication sharedApplication] keyWindow].rootViewController = |
| parentController_; |
| - shareToDelegate_.reset( |
| - [[OCMockObject mockForProtocol:@protocol(ShareToDelegate)] retain]); |
| - shareData_.reset([[ShareToData alloc] |
| - initWithURL:GURL("https://chromium.org") |
| - title:@"" |
| - isOriginalTitle:YES |
| - isPagePrintable:YES |
| - thumbnailGenerator:DummyThumbnailGeneratorBlock()]); |
| + shareToDelegate_ = |
| + [OCMockObject mockForProtocol:@protocol(ShareToDelegate)]; |
| + shareData_ = |
| + [[ShareToData alloc] initWithURL:GURL("https://chromium.org") |
| + title:@"" |
| + isOriginalTitle:YES |
| + isPagePrintable:YES |
| + thumbnailGenerator:DummyThumbnailGeneratorBlock()]; |
| } |
| void TearDown() override { |
| @@ -61,7 +64,7 @@ class ActivityServiceControllerTest : public PlatformTest { |
| } |
| id<ShareToDelegate> GetShareToDelegate() { |
| - return static_cast<id<ShareToDelegate>>(shareToDelegate_.get()); |
| + return static_cast<id<ShareToDelegate>>(shareToDelegate_); |
| } |
| CGRect AnchorRect() { |
| @@ -72,7 +75,7 @@ class ActivityServiceControllerTest : public PlatformTest { |
| UIView* AnchorView() { |
| // On iPad, UIPopovers must be anchored to non nil views. |
| - return [parentController_.get() view]; |
| + return [parentController_ view]; |
| } |
| BOOL ArrayContainsImageSource(NSArray* array) { |
| @@ -142,8 +145,8 @@ class ActivityServiceControllerTest : public PlatformTest { |
| // |extensionItem| and expects failure. |
| void ProcessItemsReturnedFromActivityFailure(NSArray* extensionItems, |
| BOOL expectedResetUI) { |
| - base::scoped_nsobject<ActivityServiceController> activityController( |
| - [[ActivityServiceController alloc] init]); |
| + ActivityServiceController* activityController = |
| + [[ActivityServiceController alloc] init]; |
| // Sets up a Mock ShareToDelegate object to check that the ShareToDelegate |
| // callback function is not called. |
| @@ -199,9 +202,9 @@ class ActivityServiceControllerTest : public PlatformTest { |
| } |
| web::TestWebThreadBundle thread_bundle_; |
| - base::scoped_nsobject<UIViewController> parentController_; |
| - base::scoped_nsobject<OCMockObject> shareToDelegate_; |
| - base::scoped_nsobject<ShareToData> shareData_; |
| + UIViewController* parentController_; |
| + OCMockObject* shareToDelegate_; |
| + ShareToData* shareData_; |
| }; |
| TEST_F(ActivityServiceControllerTest, PresentAndDismissController) { |
| @@ -209,9 +212,9 @@ TEST_F(ActivityServiceControllerTest, PresentAndDismissController) { |
| successMessage:[OCMArg isNil]]; |
| UIViewController* parentController = |
| - static_cast<UIViewController*>(parentController_.get()); |
| - base::scoped_nsobject<ActivityServiceController> activityController( |
| - [[ActivityServiceController alloc] init]); |
| + static_cast<UIViewController*>(parentController_); |
| + ActivityServiceController* activityController = |
| + [[ActivityServiceController alloc] init]; |
| EXPECT_FALSE([activityController isActive]); |
| // Test sharing. |
| @@ -234,17 +237,17 @@ TEST_F(ActivityServiceControllerTest, PresentAndDismissController) { |
| // Verifies that an UIActivityImageSource is sent to the |
| // UIActivityViewController if and only if the ShareToData contains an image. |
| TEST_F(ActivityServiceControllerTest, ActivityItemsForData) { |
| - base::scoped_nsobject<ActivityServiceController> activityController( |
| - [[ActivityServiceController alloc] init]); |
| + ActivityServiceController* activityController = |
| + [[ActivityServiceController alloc] init]; |
| // ShareToData does not contain an image, so the result items array will not |
| // contain an image source. |
| - base::scoped_nsobject<ShareToData> data([[ShareToData alloc] |
| - initWithURL:GURL("https://chromium.org") |
| - title:@"foo" |
| - isOriginalTitle:YES |
| - isPagePrintable:YES |
| - thumbnailGenerator:DummyThumbnailGeneratorBlock()]); |
| + ShareToData* data = |
| + [[ShareToData alloc] initWithURL:GURL("https://chromium.org") |
| + title:@"foo" |
| + isOriginalTitle:YES |
| + isPagePrintable:YES |
| + thumbnailGenerator:DummyThumbnailGeneratorBlock()]; |
| NSArray* items = [activityController activityItemsForData:data]; |
| EXPECT_FALSE(ArrayContainsImageSource(items)); |
| @@ -258,14 +261,14 @@ TEST_F(ActivityServiceControllerTest, ActivityItemsForData) { |
| // Verifies that when App Extension support is enabled, the URL string is |
| // passed in a dictionary as part of the Activity Items to the App Extension. |
| TEST_F(ActivityServiceControllerTest, ActivityItemsForDataWithPasswordAppEx) { |
| - base::scoped_nsobject<ActivityServiceController> activityController( |
| - [[ActivityServiceController alloc] init]); |
| - base::scoped_nsobject<ShareToData> data([[ShareToData alloc] |
| - initWithURL:GURL("https://chromium.org/login.html") |
| - title:@"kung fu fighting" |
| - isOriginalTitle:YES |
| - isPagePrintable:YES |
| - thumbnailGenerator:DummyThumbnailGeneratorBlock()]); |
| + ActivityServiceController* activityController = |
| + [[ActivityServiceController alloc] init]; |
| + ShareToData* data = |
| + [[ShareToData alloc] initWithURL:GURL("https://chromium.org/login.html") |
| + title:@"kung fu fighting" |
| + isOriginalTitle:YES |
| + isPagePrintable:YES |
| + thumbnailGenerator:DummyThumbnailGeneratorBlock()]; |
| NSArray* items = [activityController activityItemsForData:data]; |
| NSString* findLoginAction = |
| (NSString*)activity_services::kUTTypeAppExtensionFindLoginAction; |
| @@ -279,19 +282,19 @@ TEST_F(ActivityServiceControllerTest, ActivityItemsForDataWithPasswordAppEx) { |
| NSItemProvider* itemProvider = item.attachments[0]; |
| // Extracts the dictionary back from the ItemProvider and then check that |
| // it has the expected version and the page's URL. |
| - __block base::scoped_nsobject<NSDictionary> result; |
| + __block NSDictionary* result; |
| [itemProvider |
| loadItemForTypeIdentifier:findLoginAction |
| options:nil |
| completionHandler:^(id item, NSError* error) { |
| if (error || ![item isKindOfClass:[NSDictionary class]]) { |
| - result.reset([[NSDictionary dictionary] retain]); |
| + result = [NSDictionary dictionary]; |
|
sdefresne
2017/02/09 16:05:05
nit: result = @{};
lody
2017/02/09 16:18:19
Done.
|
| } else { |
| - result.reset([item retain]); |
| + result = item; |
| } |
| }]; |
| base::test::ios::WaitUntilCondition(^{ |
| - return result.get() != nil; |
| + return result != nil; |
| }); |
| EXPECT_EQ(2U, [result count]); |
| // Checks version. |
| @@ -320,14 +323,14 @@ TEST_F(ActivityServiceControllerTest, ActivityItemsForDataWithPasswordAppEx) { |
| // is enabled. |
| TEST_F(ActivityServiceControllerTest, |
| ActivityItemsForDataWithPasswordAppExReturnsURL) { |
| - base::scoped_nsobject<ActivityServiceController> activityController( |
| - [[ActivityServiceController alloc] init]); |
| - base::scoped_nsobject<ShareToData> data([[ShareToData alloc] |
| - initWithURL:GURL("https://chromium.org/login.html") |
| - title:@"kung fu fighting" |
| - isOriginalTitle:YES |
| - isPagePrintable:YES |
| - thumbnailGenerator:DummyThumbnailGeneratorBlock()]); |
| + ActivityServiceController* activityController = |
| + [[ActivityServiceController alloc] init]; |
| + ShareToData* data = |
| + [[ShareToData alloc] initWithURL:GURL("https://chromium.org/login.html") |
| + title:@"kung fu fighting" |
| + isOriginalTitle:YES |
| + isPagePrintable:YES |
| + thumbnailGenerator:DummyThumbnailGeneratorBlock()]; |
| NSArray* items = [activityController activityItemsForData:data]; |
| NSString* shareAction = @"com.apple.UIKit.activity.PostToFacebook"; |
| NSArray* urlItems = |
| @@ -345,8 +348,8 @@ TEST_F(ActivityServiceControllerTest, |
| // Verifies that -processItemsReturnedFromActivity:status:item: contains |
| // the username and password. |
| TEST_F(ActivityServiceControllerTest, ProcessItemsReturnedSuccessfully) { |
| - base::scoped_nsobject<ActivityServiceController> activityController( |
| - [[ActivityServiceController alloc] init]); |
| + ActivityServiceController* activityController = |
| + [[ActivityServiceController alloc] init]; |
| // Sets up a Mock ShareToDelegate object to check that the callback function |
| // -passwordAppExDidFinish:username:password:successMessage: |
| @@ -357,8 +360,8 @@ TEST_F(ActivityServiceControllerTest, ProcessItemsReturnedSuccessfully) { |
| NSString* const kSecretPassword = @"super!secret"; |
| __block bool blockCalled = false; |
| void (^validationBlock)(NSInvocation*) = ^(NSInvocation* invocation) { |
| - NSString* username; |
| - NSString* password; |
| + __unsafe_unretained NSString* username; |
| + __unsafe_unretained NSString* password; |
| // Skips 0 and 1 index because they are |self| and |cmd|. |
| [invocation getArgument:&username atIndex:3]; |
| [invocation getArgument:&password atIndex:4]; |
| @@ -379,12 +382,11 @@ TEST_F(ActivityServiceControllerTest, ProcessItemsReturnedSuccessfully) { |
| NSDictionary* dictionaryFromAppEx = |
| @{ @"username" : kSecretUsername, |
| @"password" : kSecretPassword }; |
| - base::scoped_nsobject<NSItemProvider> itemProvider([[NSItemProvider alloc] |
| - initWithItem:dictionaryFromAppEx |
| - typeIdentifier:(NSString*)kUTTypePropertyList]); |
| - base::scoped_nsobject<NSExtensionItem> extensionItem( |
| - [[NSExtensionItem alloc] init]); |
| - [extensionItem setAttachments:@[ itemProvider.get() ]]; |
| + NSItemProvider* itemProvider = |
| + [[NSItemProvider alloc] initWithItem:dictionaryFromAppEx |
| + typeIdentifier:(NSString*)kUTTypePropertyList]; |
| + NSExtensionItem* extensionItem = [[NSExtensionItem alloc] init]; |
| + [extensionItem setAttachments:@[ itemProvider ]]; |
| BOOL resetUI = |
| [activityController processItemsReturnedFromActivity:activityType |
| @@ -405,40 +407,39 @@ TEST_F(ActivityServiceControllerTest, ProcessItemsReturnedFailures) { |
| ProcessItemsReturnedFromActivityFailure(@[], YES); |
| // Extension Item is empty. |
| - base::scoped_nsobject<NSExtensionItem> extensionItem( |
| - [[NSExtensionItem alloc] init]); |
| + NSExtensionItem* extensionItem = [[NSExtensionItem alloc] init]; |
| [extensionItem setAttachments:@[]]; |
| ProcessItemsReturnedFromActivityFailure(@[ extensionItem ], YES); |
| // Extension Item does not have a property list provider as the first |
| // attachment. |
| - base::scoped_nsobject<NSItemProvider> itemProvider([[NSItemProvider alloc] |
| - initWithItem:@"some arbitrary garbage" |
| - typeIdentifier:(NSString*)kUTTypeText]); |
| - [extensionItem setAttachments:@[ itemProvider.get() ]]; |
| + NSItemProvider* itemProvider = |
| + [[NSItemProvider alloc] initWithItem:@"some arbitrary garbage" |
| + typeIdentifier:(NSString*)kUTTypeText]; |
| + [extensionItem setAttachments:@[ itemProvider ]]; |
| ProcessItemsReturnedFromActivityFailure(@[ extensionItem ], YES); |
| // Property list provider did not return a dictionary object. |
| - itemProvider.reset([[NSItemProvider alloc] |
| - initWithItem:@[ @"foo", @"bar" ] |
| - typeIdentifier:(NSString*)kUTTypePropertyList]); |
| - [extensionItem setAttachments:@[ itemProvider.get() ]]; |
| + itemProvider = |
| + [[NSItemProvider alloc] initWithItem:@[ @"foo", @"bar" ] |
| + typeIdentifier:(NSString*)kUTTypePropertyList]; |
| + [extensionItem setAttachments:@[ itemProvider ]]; |
| ProcessItemsReturnedFromActivityFailure(@[ extensionItem ], NO); |
| } |
| // Verifies that the PrintActivity is sent to the UIActivityViewController if |
| // and only if the activity is "printable". |
| TEST_F(ActivityServiceControllerTest, ApplicationActivitiesForData) { |
| - base::scoped_nsobject<ActivityServiceController> activityController( |
| - [[ActivityServiceController alloc] init]); |
| + ActivityServiceController* activityController = |
| + [[ActivityServiceController alloc] init]; |
| // Verify printable data. |
| - base::scoped_nsobject<ShareToData> data([[ShareToData alloc] |
| - initWithURL:GURL("https://chromium.org/printable") |
| - title:@"bar" |
| - isOriginalTitle:YES |
| - isPagePrintable:YES |
| - thumbnailGenerator:DummyThumbnailGeneratorBlock()]); |
| + ShareToData* data = |
| + [[ShareToData alloc] initWithURL:GURL("https://chromium.org/printable") |
| + title:@"bar" |
| + isOriginalTitle:YES |
| + isPagePrintable:YES |
| + thumbnailGenerator:DummyThumbnailGeneratorBlock()]; |
| NSArray* items = |
| [activityController applicationActivitiesForData:data controller:nil]; |
| @@ -448,12 +449,12 @@ TEST_F(ActivityServiceControllerTest, ApplicationActivitiesForData) { |
| EXPECT_EQ([PrintActivity class], [[items objectAtIndex:0] class]); |
| // Verify non-printable data. |
| - data.reset([[ShareToData alloc] |
| - initWithURL:GURL("https://chromium.org/unprintable") |
| - title:@"baz" |
| - isOriginalTitle:YES |
| - isPagePrintable:NO |
| - thumbnailGenerator:DummyThumbnailGeneratorBlock()]); |
| + data = |
| + [[ShareToData alloc] initWithURL:GURL("https://chromium.org/unprintable") |
| + title:@"baz" |
| + isOriginalTitle:YES |
| + isPagePrintable:NO |
| + thumbnailGenerator:DummyThumbnailGeneratorBlock()]; |
| items = [activityController applicationActivitiesForData:data controller:nil]; |
| EXPECT_EQ(expected_items_count - 1, [items count]); |
| } |