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

Side by Side Diff: ios/chrome/browser/web/mailto_url_rewriter_unittest.mm

Issue 2859743002: Adds MailtoURLRewriterObserver to MailtoURLRewriter (Closed)
Patch Set: no changes to BUILD.gn any more Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ios/chrome/browser/web/mailto_url_rewriter.h" 5 #import "ios/chrome/browser/web/mailto_url_rewriter.h"
6 6
7 #import "ios/chrome/browser/web/mailto_handler.h" 7 #import "ios/chrome/browser/web/mailto_handler.h"
8 #import "ios/chrome/browser/web/mailto_handler_gmail.h" 8 #import "ios/chrome/browser/web/mailto_handler_gmail.h"
9 #import "ios/chrome/browser/web/mailto_handler_system_mail.h" 9 #import "ios/chrome/browser/web/mailto_handler_system_mail.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 @interface FakeMailtoHandlerGmailInstalled : MailtoHandlerGmail 44 @interface FakeMailtoHandlerGmailInstalled : MailtoHandlerGmail
45 @end 45 @end
46 46
47 @implementation FakeMailtoHandlerGmailInstalled 47 @implementation FakeMailtoHandlerGmailInstalled
48 - (BOOL)isAvailable { 48 - (BOOL)isAvailable {
49 return YES; 49 return YES;
50 } 50 }
51 @end 51 @end
52 52
53 #pragma mark - Test Observer object
54
55 @interface RewriterObserver : NSObject<MailtoURLRewriterObserver>
56 @property(nonatomic, readonly) int changeCount;
57 @end
58
59 @implementation RewriterObserver
60 @synthesize changeCount = _changeCount;
61 - (void)rewriterDidChange:(MailtoURLRewriter*)rewriter {
62 ++_changeCount;
63 }
64 @end
65
53 #pragma mark - MailtoURLRewriter private interfaces for testing. 66 #pragma mark - MailtoURLRewriter private interfaces for testing.
54 67
55 @interface MailtoURLRewriter () 68 @interface MailtoURLRewriter ()
56 + (void)resetDefaultHandlerIDForTesting; 69 + (void)resetDefaultHandlerIDForTesting;
57 - (void)addMailtoApps:(NSArray<MailtoHandler*>*)handlerApps; 70 - (void)addMailtoApps:(NSArray<MailtoHandler*>*)handlerApps;
58 @end 71 @end
59 72
60 #pragma mark - Unit Test Cases 73 #pragma mark - Unit Test Cases
61 74
62 class MailtoURLRewriterTest : public PlatformTest { 75 class MailtoURLRewriterTest : public PlatformTest {
63 protected: 76 protected:
64 void SetUp() override { [MailtoURLRewriter resetDefaultHandlerIDForTesting]; } 77 void SetUp() override { [MailtoURLRewriter resetDefaultHandlerIDForTesting]; }
65 }; 78 };
66 79
67 // Tests that a standard instance has the expected values. 80 // Tests that a standard instance has the expected values.
68 TEST_F(MailtoURLRewriterTest, TestStandardInstance) { 81 TEST_F(MailtoURLRewriterTest, TestStandardInstance) {
69 MailtoURLRewriter* rewriter = 82 MailtoURLRewriter* rewriter =
70 [[MailtoURLRewriter alloc] initWithStandardHandlers]; 83 [[MailtoURLRewriter alloc] initWithStandardHandlers];
71 EXPECT_TRUE(rewriter); 84 EXPECT_TRUE(rewriter);
85 EXPECT_GT([[rewriter defaultHandlerName] length], 0U);
72 // ID for system Mail client app must not be an empty string. 86 // ID for system Mail client app must not be an empty string.
73 EXPECT_GT([[MailtoURLRewriter systemMailApp] length], 0U); 87 EXPECT_GT([[MailtoURLRewriter systemMailApp] length], 0U);
74 88
75 NSArray<MailtoHandler*>* handlers = [rewriter defaultHandlers]; 89 NSArray<MailtoHandler*>* handlers = [rewriter defaultHandlers];
76 EXPECT_GE([handlers count], 1U); 90 EXPECT_GE([handlers count], 1U);
77 for (MailtoHandler* handler in handlers) { 91 for (MailtoHandler* handler in handlers) {
78 ASSERT_TRUE(handler); 92 ASSERT_TRUE(handler);
79 NSString* appStoreID = [handler appStoreID]; 93 NSString* appStoreID = [handler appStoreID];
80 [rewriter setDefaultHandlerID:appStoreID]; 94 [rewriter setDefaultHandlerID:appStoreID];
81 EXPECT_NSEQ(appStoreID, [rewriter defaultHandlerID]); 95 EXPECT_NSEQ(appStoreID, [rewriter defaultHandlerID]);
(...skipping 26 matching lines...) Expand all
108 ASSERT_TRUE([otherHandlerID length]); 122 ASSERT_TRUE([otherHandlerID length]);
109 [rewriter setDefaultHandlerID:otherHandlerID]; 123 [rewriter setDefaultHandlerID:otherHandlerID];
110 124
111 // Create a new MailtoURLRewriter object and verify that the current 125 // Create a new MailtoURLRewriter object and verify that the current
112 // default is the |otherHandlerID| set in the previous step. 126 // default is the |otherHandlerID| set in the previous step.
113 MailtoURLRewriter* rewriter2 = [[MailtoURLRewriter alloc] init]; 127 MailtoURLRewriter* rewriter2 = [[MailtoURLRewriter alloc] init];
114 [rewriter2 addMailtoApps:@[ systemMailHandler, fakeGmailHandler ]]; 128 [rewriter2 addMailtoApps:@[ systemMailHandler, fakeGmailHandler ]];
115 EXPECT_NSEQ(otherHandlerID, [rewriter2 defaultHandlerID]); 129 EXPECT_NSEQ(otherHandlerID, [rewriter2 defaultHandlerID]);
116 } 130 }
117 131
132 TEST_F(MailtoURLRewriterTest, TestChangeObserver) {
133 RewriterObserver* observer = [[RewriterObserver alloc] init];
134 ASSERT_EQ(0, [observer changeCount]);
135
136 // Sets up a MailtoURLRewriter object. The default handler is Gmail app
137 // because |fakeGmailHandler| reports that it is "installed".
138 MailtoURLRewriter* rewriter = [[MailtoURLRewriter alloc] init];
139 MailtoHandler* systemMailHandler = [[MailtoHandlerSystemMail alloc] init];
140 MailtoHandler* fakeGmailHandler =
141 [[FakeMailtoHandlerGmailInstalled alloc] init];
142 [rewriter addMailtoApps:@[ systemMailHandler, fakeGmailHandler ]];
143 EXPECT_NSEQ([fakeGmailHandler appStoreID], [rewriter defaultHandlerID]);
144 [rewriter setObserver:observer];
145
146 // Setting system Mail app as handler while current handler is Gmail should
147 // trigger the observer callback, incrementing count from 0 to 1.
148 [rewriter setDefaultHandlerID:[systemMailHandler appStoreID]];
149 EXPECT_EQ(1, [observer changeCount]);
150
151 // Setting system Mail app as handler while current handler is already
152 // system Mail app should not trigger the observer callback. Count remains
153 // at 1.
154 [rewriter setDefaultHandlerID:[systemMailHandler appStoreID]];
155 EXPECT_EQ(1, [observer changeCount]);
156
157 // Setting Gmail app as the default handler when current handler is system
158 // Mail app should trigger the observer callback. Count increases from 1 to 2.
159 [rewriter setDefaultHandlerID:[fakeGmailHandler appStoreID]];
160 EXPECT_EQ(2, [observer changeCount]);
jif 2017/05/10 09:32:07 Add final test where |observer| is deallocated and
pkl (ping after 24h if needed) 2017/05/10 16:28:06 Done.
161 }
162
118 // Tests that a new user without Gmail app installed launches system Mail app. 163 // Tests that a new user without Gmail app installed launches system Mail app.
119 TEST_F(MailtoURLRewriterTest, TestNewUserNoGmail) { 164 TEST_F(MailtoURLRewriterTest, TestNewUserNoGmail) {
120 // Sets pre-condition for a user who did not have Chrome installed. 165 // Sets pre-condition for a user who did not have Chrome installed.
121 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; 166 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
122 [defaults removeObjectForKey:kLegacyShouldAutoOpenKey]; 167 [defaults removeObjectForKey:kLegacyShouldAutoOpenKey];
123 // A faked MailtoHandler for Gmail. 168 // A faked MailtoHandler for Gmail.
124 MailtoHandler* fakeGmailHandler = 169 MailtoHandler* fakeGmailHandler =
125 [[FakeMailtoHandlerGmailNotInstalled alloc] init]; 170 [[FakeMailtoHandlerGmailNotInstalled alloc] init];
126 171
127 // Sets up a MailtoURLRewriter for testing. 172 // Sets up a MailtoURLRewriter for testing.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 [[FakeMailtoHandlerGmailInstalled alloc] init]; 250 [[FakeMailtoHandlerGmailInstalled alloc] init];
206 251
207 // Sets up a MailtoURLRewriter for testing. 252 // Sets up a MailtoURLRewriter for testing.
208 MailtoURLRewriter* rewriter = [[MailtoURLRewriter alloc] init]; 253 MailtoURLRewriter* rewriter = [[MailtoURLRewriter alloc] init];
209 MailtoHandler* systemMailHandler = [[MailtoHandlerSystemMail alloc] init]; 254 MailtoHandler* systemMailHandler = [[MailtoHandlerSystemMail alloc] init];
210 [rewriter addMailtoApps:@[ systemMailHandler, fakeGmailHandler ]]; 255 [rewriter addMailtoApps:@[ systemMailHandler, fakeGmailHandler ]];
211 256
212 // Verify that MailtoURLRewriter will use Gmail app. 257 // Verify that MailtoURLRewriter will use Gmail app.
213 EXPECT_NSEQ(kGmailAppStoreID, [rewriter defaultHandlerID]); 258 EXPECT_NSEQ(kGmailAppStoreID, [rewriter defaultHandlerID]);
214 } 259 }
OLDNEW
« ios/chrome/browser/web/mailto_url_rewriter.h ('K') | « ios/chrome/browser/web/mailto_url_rewriter.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698