blob: 33331a46c684323554a343207a72ce96664cd675 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import <Foundation/Foundation.h>
#import "base/apple/foundation_util.h"
#import "base/strings/string_number_conversions.h"
#import "base/strings/sys_string_conversions.h"
#import "ios/web/public/test/javascript_test.h"
#import "ios/web/public/test/js_test_util.h"
#import "testing/gtest/include/gtest/gtest.h"
#import "testing/gtest_mac.h"
namespace {
class ChildFrameRegistrationJavascriptTest : public web::JavascriptTest {
protected:
ChildFrameRegistrationJavascriptTest() {}
~ChildFrameRegistrationJavascriptTest() override {}
void SetUp() override {
web::JavascriptTest::SetUp();
AddGCrWebScript();
AddCommonScript();
AddMessageScript();
AddUserScript(@"child_frame_registration_test");
}
};
TEST_F(ChildFrameRegistrationJavascriptTest, RegisterFrames) {
NSString* html = @"<body> outer frame"
" <iframe srcdoc='<body>inner frame 1</body>'></iframe>"
" <iframe srcdoc='<body>inner frame 2</body>'></iframe>"
"</body>";
ASSERT_TRUE(LoadHtml(html));
id result = web::test::ExecuteJavaScript(
web_view(), @"__gCrWeb.childFrameRegistrationTesting."
@"registerAllChildFrames();");
ASSERT_TRUE(result);
NSArray<NSString*>* result_array =
base::apple::ObjCCast<NSArray<NSString*>>(result);
ASSERT_TRUE(result_array);
EXPECT_EQ(2u, [result_array count]);
for (NSString* item in result_array) {
ASSERT_EQ(32u, [item length]);
uint64_t unused;
EXPECT_TRUE(base::HexStringToUInt64(
base::SysNSStringToUTF8([item substringToIndex:16]), &unused));
EXPECT_TRUE(base::HexStringToUInt64(
base::SysNSStringToUTF8([item substringFromIndex:16]), &unused));
}
}
} // namespace