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..676bb0e6940452bd8f4f1fe171255717dab2d314 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 = @{}; |
} 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]); |
} |