123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- // Copyright 2017 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "components/javascript_dialogs/app_modal_dialog_manager.h"
- #include "base/strings/utf_string_conversions.h"
- #include "build/build_config.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "url/origin.h"
- namespace javascript_dialogs {
- TEST(AppModalDialogManagerTest, GetTitle) {
- struct Case {
- // The name of the test case.
- const char* case_name;
- // The URL of the main frame of the page.
- const char* main_frame_url;
- // Whether the main frame is alerting.
- bool is_main_frame;
- // If `is_main_frame` is false, the URL of the alerting frame of the page.
- const char* alerting_frame_url;
- // The expected title for the alert.
- const char* expected;
- } cases[] = {
- // Standard main frame alert.
- {"standard", "http://foo.com/", true, "", "foo.com says"},
- // Subframe alert from the same origin.
- {"subframe same origin", "http://foo.com/1", false, "http://foo.com/2",
- "foo.com says"},
- // Subframe alert from a different origin.
- {"subframe different origin", "http://foo.com/", false, "http://bar.com/",
- "An embedded page at bar.com says"},
- // file:
- // - main frame:
- {"file main frame", "file:///path/to/page.html", true, "",
- "This page says"},
- // - subframe:
- {"file subframe", "http://foo.com/", false, "file:///path/to/page.html",
- "An embedded page on this page says"},
- // data:
- // /!\ NOTE that this is for data URLs entered directly in the omnibox.
- // For pages that generate frames with data URLs, see the browsertest.
- // - main frame:
- {"data main frame", "data:blahblah", true, "", "This page says"},
- // - subframe:
- {"data subframe", "http://foo.com/", false, "data:blahblah",
- "An embedded page on this page says"},
- // javascript:
- // /!\ NOTE that this is for javascript URLs entered directly in the
- // omnibox. For pages that generate frames with javascript URLs, see the
- // browsertest.
- // - main frame:
- {"javascript main frame", "javascript:abc", true, "", "This page says"},
- // - subframe:
- {"javascript subframe", "http://foo.com/", false, "javascript:abc",
- "An embedded page on this page says"},
- // about:
- // /!\ NOTE that this is for about:blank URLs entered directly in the
- // omnibox. For pages that generate frames with about:blank URLs, see the
- // browsertest.
- // - main frame:
- {"about main frame", "about:blank", true, "", "This page says"},
- // - subframe:
- {"about subframe", "http://foo.com/", false, "about:blank",
- "An embedded page on this page says"},
- // blob:
- // - main frame:
- {"blob main frame",
- "blob:http://foo.com/66666666-6666-6666-6666-666666666666", true, "",
- "foo.com says"},
- // - subframe:
- {"blob subframe", "http://bar.com/", false,
- "blob:http://foo.com/66666666-6666-6666-6666-666666666666",
- "An embedded page at foo.com says"},
- // filesystem:
- // - main frame:
- {"filesystem main frame", "filesystem:http://foo.com/bar.html", true, "",
- "foo.com says"},
- // - subframe:
- {"filesystem subframe", "http://bar.com/", false,
- "filesystem:http://foo.com/bar.html",
- "An embedded page at foo.com says"},
- };
- for (const auto& test_case : cases) {
- SCOPED_TRACE(test_case.case_name);
- url::Origin main_frame_origin =
- url::Origin::Create(GURL(test_case.main_frame_url));
- url::Origin alerting_frame_origin =
- test_case.is_main_frame
- ? main_frame_origin
- : url::Origin::Create(GURL(test_case.alerting_frame_url));
- std::u16string result = AppModalDialogManager::GetTitleImpl(
- main_frame_origin, alerting_frame_origin);
- EXPECT_EQ(test_case.expected, base::UTF16ToUTF8(result));
- }
- }
- } // namespace javascript_dialogs
|