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

Side by Side Diff: ios/web/web_state/ui/wk_web_view_configuration_provider_unittest.mm

Issue 2933363002: [ObjC ARC] Converts ios/web:ios_web_web_state_ui_unittests to ARC. (Closed)
Patch Set: removed spurious test. Created 3 years, 6 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/web/web_state/ui/wk_web_view_configuration_provider.h" 5 #import "ios/web/web_state/ui/wk_web_view_configuration_provider.h"
6 6
7 #import <WebKit/WebKit.h> 7 #import <WebKit/WebKit.h>
8 8
9 #import "base/ios/weak_nsobject.h"
10 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
11 #include "ios/web/public/test/fakes/test_browser_state.h" 10 #include "ios/web/public/test/fakes/test_browser_state.h"
12 #include "ios/web/public/test/scoped_testing_web_client.h" 11 #include "ios/web/public/test/scoped_testing_web_client.h"
13 #import "ios/web/public/web_client.h" 12 #import "ios/web/public/web_client.h"
14 #import "ios/web/web_state/js/page_script_util.h" 13 #import "ios/web/web_state/js/page_script_util.h"
15 #import "ios/web/web_state/ui/crw_wk_script_message_router.h" 14 #import "ios/web/web_state/ui/crw_wk_script_message_router.h"
16 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
17 #import "testing/gtest_mac.h" 16 #import "testing/gtest_mac.h"
18 #include "testing/platform_test.h" 17 #include "testing/platform_test.h"
19 18
19 #if !defined(__has_feature) || !__has_feature(objc_arc)
20 #error "This file requires ARC support."
21 #endif
22
20 namespace web { 23 namespace web {
21 namespace { 24 namespace {
22 25
23 class WKWebViewConfigurationProviderTest : public PlatformTest { 26 class WKWebViewConfigurationProviderTest : public PlatformTest {
24 public: 27 public:
25 WKWebViewConfigurationProviderTest() 28 WKWebViewConfigurationProviderTest()
26 : web_client_(base::WrapUnique(new web::WebClient)) {} 29 : web_client_(base::WrapUnique(new web::WebClient)) {}
27 30
28 protected: 31 protected:
29 // Returns WKWebViewConfigurationProvider associated with |browser_state_|. 32 // Returns WKWebViewConfigurationProvider associated with |browser_state_|.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 WKWebViewConfigurationProvider& provider = GetProvider(&browser_state_); 77 WKWebViewConfigurationProvider& provider = GetProvider(&browser_state_);
75 WKWebViewConfiguration* config = provider.GetWebViewConfiguration(); 78 WKWebViewConfiguration* config = provider.GetWebViewConfiguration();
76 ASSERT_TRUE(config); 79 ASSERT_TRUE(config);
77 EXPECT_FALSE(config.websiteDataStore.persistent); 80 EXPECT_FALSE(config.websiteDataStore.persistent);
78 } 81 }
79 82
80 // Tests that internal configuration object can not be changed by clients. 83 // Tests that internal configuration object can not be changed by clients.
81 TEST_F(WKWebViewConfigurationProviderTest, ConfigurationProtection) { 84 TEST_F(WKWebViewConfigurationProviderTest, ConfigurationProtection) {
82 WKWebViewConfigurationProvider& provider = GetProvider(&browser_state_); 85 WKWebViewConfigurationProvider& provider = GetProvider(&browser_state_);
83 WKWebViewConfiguration* config = provider.GetWebViewConfiguration(); 86 WKWebViewConfiguration* config = provider.GetWebViewConfiguration();
84 base::scoped_nsobject<WKProcessPool> pool([[config processPool] retain]); 87 WKProcessPool* pool = [config processPool];
85 base::scoped_nsobject<WKPreferences> prefs([[config preferences] retain]); 88 WKPreferences* prefs = [config preferences];
86 base::scoped_nsobject<WKUserContentController> userContentController( 89 WKUserContentController* userContentController =
87 [[config userContentController] retain]); 90 [config userContentController];
88 91
89 // Change the properties of returned configuration object. 92 // Change the properties of returned configuration object.
90 TestBrowserState other_browser_state; 93 TestBrowserState other_browser_state;
91 WKWebViewConfiguration* other_wk_web_view_configuration = 94 WKWebViewConfiguration* other_wk_web_view_configuration =
92 GetProvider(&other_browser_state).GetWebViewConfiguration(); 95 GetProvider(&other_browser_state).GetWebViewConfiguration();
93 ASSERT_TRUE(other_wk_web_view_configuration); 96 ASSERT_TRUE(other_wk_web_view_configuration);
94 config.processPool = other_wk_web_view_configuration.processPool; 97 config.processPool = other_wk_web_view_configuration.processPool;
95 config.preferences = other_wk_web_view_configuration.preferences; 98 config.preferences = other_wk_web_view_configuration.preferences;
96 config.userContentController = 99 config.userContentController =
97 other_wk_web_view_configuration.userContentController; 100 other_wk_web_view_configuration.userContentController;
98 101
99 // Make sure that the properties of internal configuration were not changed. 102 // Make sure that the properties of internal configuration were not changed.
100 EXPECT_TRUE(provider.GetWebViewConfiguration().processPool); 103 EXPECT_TRUE(provider.GetWebViewConfiguration().processPool);
101 EXPECT_EQ(pool.get(), provider.GetWebViewConfiguration().processPool); 104 EXPECT_EQ(pool, provider.GetWebViewConfiguration().processPool);
102 EXPECT_TRUE(provider.GetWebViewConfiguration().preferences); 105 EXPECT_TRUE(provider.GetWebViewConfiguration().preferences);
103 EXPECT_EQ(prefs.get(), provider.GetWebViewConfiguration().preferences); 106 EXPECT_EQ(prefs, provider.GetWebViewConfiguration().preferences);
104 EXPECT_TRUE(provider.GetWebViewConfiguration().userContentController); 107 EXPECT_TRUE(provider.GetWebViewConfiguration().userContentController);
105 EXPECT_EQ(userContentController.get(), 108 EXPECT_EQ(userContentController,
106 provider.GetWebViewConfiguration().userContentController); 109 provider.GetWebViewConfiguration().userContentController);
107 } 110 }
108 111
109 // Tests that script message router is bound to correct user content controller. 112 // Tests that script message router is bound to correct user content controller.
110 TEST_F(WKWebViewConfigurationProviderTest, ScriptMessageRouter) { 113 TEST_F(WKWebViewConfigurationProviderTest, ScriptMessageRouter) {
111 ASSERT_TRUE(GetProvider().GetWebViewConfiguration().userContentController); 114 ASSERT_TRUE(GetProvider().GetWebViewConfiguration().userContentController);
112 EXPECT_EQ(GetProvider().GetWebViewConfiguration().userContentController, 115 EXPECT_EQ(GetProvider().GetWebViewConfiguration().userContentController,
113 GetProvider().GetScriptMessageRouter().userContentController); 116 GetProvider().GetScriptMessageRouter().userContentController);
114 } 117 }
115 118
116 // Tests that both configuration and script message router are deallocated after 119 // Tests that both configuration and script message router are deallocated after
117 // |Purge| call. 120 // |Purge| call.
118 TEST_F(WKWebViewConfigurationProviderTest, Purge) { 121 TEST_F(WKWebViewConfigurationProviderTest, Purge) {
119 base::WeakNSObject<id> config; 122 __weak id config;
120 base::WeakNSObject<id> router; 123 __weak id router;
121 @autoreleasepool { // Make sure that resulting copy is deallocated. 124 @autoreleasepool { // Make sure that resulting copy is deallocated.
122 config.reset(GetProvider().GetWebViewConfiguration()); 125 config = GetProvider().GetWebViewConfiguration();
123 router.reset(GetProvider().GetScriptMessageRouter()); 126 router = GetProvider().GetScriptMessageRouter();
124 ASSERT_TRUE(config); 127 ASSERT_TRUE(config);
125 ASSERT_TRUE(router); 128 ASSERT_TRUE(router);
126 } 129 }
127 130
128 // No configuration and router after |Purge| call. 131 // No configuration and router after |Purge| call.
129 GetProvider().Purge(); 132 GetProvider().Purge();
130 EXPECT_FALSE(config); 133 EXPECT_FALSE(config);
131 EXPECT_FALSE(router); 134 EXPECT_FALSE(router);
132 } 135 }
133 136
134 // Tests that configuration's userContentController has only one script with the 137 // Tests that configuration's userContentController has only one script with the
135 // same content as web::GetEarlyPageScript() returns. 138 // same content as web::GetEarlyPageScript() returns.
136 TEST_F(WKWebViewConfigurationProviderTest, UserScript) { 139 TEST_F(WKWebViewConfigurationProviderTest, UserScript) {
137 WKWebViewConfiguration* config = GetProvider().GetWebViewConfiguration(); 140 WKWebViewConfiguration* config = GetProvider().GetWebViewConfiguration();
138 NSArray* scripts = config.userContentController.userScripts; 141 NSArray* scripts = config.userContentController.userScripts;
139 EXPECT_EQ(1U, scripts.count); 142 EXPECT_EQ(1U, scripts.count);
140 NSString* early_script = GetEarlyPageScript(&browser_state_); 143 NSString* early_script = GetEarlyPageScript(&browser_state_);
141 // |earlyScript| is a substring of |userScripts|. The latter wraps the 144 // |earlyScript| is a substring of |userScripts|. The latter wraps the
142 // former with "if (!injected)" check to avoid double injections. 145 // former with "if (!injected)" check to avoid double injections.
143 EXPECT_LT(0U, [[scripts[0] source] rangeOfString:early_script].length); 146 EXPECT_LT(0U, [[scripts[0] source] rangeOfString:early_script].length);
144 } 147 }
145 148
146 } // namespace 149 } // namespace
147 } // namespace web 150 } // namespace web
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698