java_script_feature_util_impl_unittest.mm 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #import "ios/web/js_messaging/java_script_feature_util_impl.h"
  5. #import <Foundation/Foundation.h>
  6. #import "ios/web/public/js_messaging/java_script_feature.h"
  7. #import "ios/web/public/js_messaging/java_script_feature_util.h"
  8. #include "testing/platform_test.h"
  9. #if !defined(__has_feature) || !__has_feature(objc_arc)
  10. #error "This file requires ARC support."
  11. #endif
  12. typedef PlatformTest JavaScriptFeatureUtilImplTest;
  13. TEST_F(JavaScriptFeatureUtilImplTest, BaseFeature) {
  14. web::JavaScriptFeature* feature =
  15. web::java_script_features::GetBaseJavaScriptFeature();
  16. std::vector<const web::JavaScriptFeature::FeatureScript*> scripts =
  17. feature->GetScripts();
  18. EXPECT_EQ(1ul, scripts.size());
  19. const web::JavaScriptFeature::FeatureScript* script = scripts.front();
  20. EXPECT_TRUE([script->GetScriptString() containsString:@"__gCrWeb"]);
  21. EXPECT_FALSE([script->GetScriptString() containsString:@"__gCrWeb.common"]);
  22. EXPECT_EQ(
  23. web::JavaScriptFeature::FeatureScript::InjectionTime::kDocumentStart,
  24. script->GetInjectionTime());
  25. EXPECT_EQ(web::JavaScriptFeature::FeatureScript::TargetFrames::kAllFrames,
  26. script->GetTargetFrames());
  27. }
  28. TEST_F(JavaScriptFeatureUtilImplTest, CommonFeature) {
  29. web::JavaScriptFeature* feature =
  30. web::java_script_features::GetCommonJavaScriptFeature();
  31. std::vector<const web::JavaScriptFeature::FeatureScript*> scripts =
  32. feature->GetScripts();
  33. EXPECT_EQ(1ul, scripts.size());
  34. const web::JavaScriptFeature::FeatureScript* script = scripts.front();
  35. EXPECT_TRUE([script->GetScriptString() containsString:@"__gCrWeb.common"]);
  36. EXPECT_FALSE([script->GetScriptString() containsString:@"__gCrWeb.message"]);
  37. EXPECT_EQ(
  38. web::JavaScriptFeature::FeatureScript::InjectionTime::kDocumentStart,
  39. script->GetInjectionTime());
  40. EXPECT_EQ(web::JavaScriptFeature::FeatureScript::TargetFrames::kAllFrames,
  41. script->GetTargetFrames());
  42. }
  43. TEST_F(JavaScriptFeatureUtilImplTest, MessageFeature) {
  44. web::JavaScriptFeature* feature =
  45. web::java_script_features::GetMessageJavaScriptFeature();
  46. std::vector<const web::JavaScriptFeature::FeatureScript*> scripts =
  47. feature->GetScripts();
  48. EXPECT_EQ(1ul, scripts.size());
  49. const web::JavaScriptFeature::FeatureScript* script = scripts.front();
  50. EXPECT_TRUE([script->GetScriptString() containsString:@"__gCrWeb.message"]);
  51. EXPECT_EQ(
  52. web::JavaScriptFeature::FeatureScript::InjectionTime::kDocumentStart,
  53. script->GetInjectionTime());
  54. EXPECT_EQ(web::JavaScriptFeature::FeatureScript::TargetFrames::kAllFrames,
  55. script->GetTargetFrames());
  56. }
  57. // Tests that the built in features are returned as expected.
  58. TEST_F(JavaScriptFeatureUtilImplTest, BuiltInFeatures) {
  59. std::vector features =
  60. web::java_script_features::GetBuiltInJavaScriptFeatures();
  61. ASSERT_EQ(1ul, features.size());
  62. web::JavaScriptFeature* feature = features.front();
  63. EXPECT_EQ(web::java_script_features::GetContextMenuJavaScriptFeature(),
  64. feature);
  65. }