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

Unified Diff: ios/chrome/browser/ui/dialogs/dialog_presenter_unittest.mm

Issue 2957423002: Check page URL origin to determine JavaScript alert titles. (Closed)
Patch Set: Small tweak 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 side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/dialogs/dialog_presenter_unittest.mm
diff --git a/ios/chrome/browser/ui/dialogs/dialog_presenter_unittest.mm b/ios/chrome/browser/ui/dialogs/dialog_presenter_unittest.mm
index 2bd6df4fd3fc499072b401d0e03915c8e8f71ccf..0e933b3a232bb64a865c5cf624cf941913bc655a 100644
--- a/ios/chrome/browser/ui/dialogs/dialog_presenter_unittest.mm
+++ b/ios/chrome/browser/ui/dialogs/dialog_presenter_unittest.mm
@@ -4,13 +4,16 @@
#import "ios/chrome/browser/ui/dialogs/dialog_presenter.h"
+#include "base/strings/sys_string_conversions.h"
#include "base/time/time.h"
+#include "components/strings/grit/components_strings.h"
#import "ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h"
#import "ios/web/public/test/fakes/test_web_state.h"
#include "ios/web/public/web_state/web_state_observer.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/gtest_mac.h"
#include "testing/platform_test.h"
+#include "ui/base/l10n/l10n_util.h"
#include "url/gurl.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
@@ -97,6 +100,43 @@ TEST_F(DialogPresenterTest, SimpleTest) {
EXPECT_EQ(&webState, delegate().presentedWebStates.front());
}
+// Test that javascript dialogs are presented with a different title when they
+// are presented from a URL with a different origin to the webstate origin.
+TEST_F(DialogPresenterTest, IFrameTest) {
+ DialogPresenterTestWebState web_state;
+ GURL foo_url = GURL("http://foo.com");
+ GURL bar_url = GURL("http://bar.com");
+
+ web_state.SetCurrentURL(foo_url);
+ [presenter() runJavaScriptAlertPanelWithMessage:@""
+ requestURL:foo_url
+ webState:&web_state
+ completionHandler:nil];
+
+ // Ensure alerts from the same domain have a correct title.
+ NSString* same_origin_title =
+ [presenter() presentedDialogCoordinator].alertController.title;
+ NSString* hostname = base::SysUTF8ToNSString(foo_url.host());
+ NSString* expected_title = l10n_util::GetNSStringF(
+ IDS_JAVASCRIPT_MESSAGEBOX_TITLE, base::SysNSStringToUTF16(hostname));
+ EXPECT_NSEQ(expected_title, same_origin_title);
+
+ [presenter() cancelAllDialogs];
+
+ // Ensure that alerts from an embedded iframe with a different domain have
+ // a title and it's different to the same-origin title.
+ web_state.SetCurrentURL(bar_url);
+ [presenter() runJavaScriptAlertPanelWithMessage:@""
+ requestURL:foo_url
+ webState:&web_state
+ completionHandler:nil];
+ NSString* different_origin_title =
+ [presenter() presentedDialogCoordinator].alertController.title;
+ expected_title = l10n_util::GetNSString(
+ IDS_JAVASCRIPT_MESSAGEBOX_TITLE_NONSTANDARD_URL_IFRAME);
+ EXPECT_NSEQ(expected_title, different_origin_title);
+}
+
// Tests that multiple JavaScript dialogs are queued
TEST_F(DialogPresenterTest, QueueTest) {
// Tests that the dialog for |webState1| has been shown.
« no previous file with comments | « ios/chrome/browser/ui/dialogs/dialog_presenter.mm ('k') | ios/chrome/browser/ui/dialogs/javascript_dialog_egtest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698