QString KFileItem::getStatusBarInfo() const { QString text = d->m_strText; const QString comment = mimeComment(); if ( d->m_bLink ) { text += ' '; if ( comment.isEmpty() ) text += i18n ( "(Symbolic Link to %1)", linkDest() ); else text += i18n("(%1, Link to %2)", comment, linkDest()); } else if ( targetUrl() != url() ) { text += i18n ( " (Points to %1)", targetUrl().pathOrUrl()); } else if ( S_ISREG( d->m_fileMode ) ) { text += QString(" (%1, %2)").arg( comment, KIO::convertSize( size() ) ); } else { text += QString(" (%1)").arg( comment ); } return text; }
TEST(MixedContentCheckerTest, IsMixedContent) { struct TestCase { const char* origin; const char* target; bool expectation; } cases[] = { {"http://example.com/foo", "http://example.com/foo", false}, {"http://example.com/foo", "https://example.com/foo", false}, {"https://example.com/foo", "https://example.com/foo", false}, {"https://example.com/foo", "wss://example.com/foo", false}, {"https://example.com/foo", "http://example.com/foo", true}, {"https://example.com/foo", "http://google.com/foo", true}, {"https://example.com/foo", "ws://example.com/foo", true}, {"https://example.com/foo", "ws://google.com/foo", true}, }; for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { const char* origin = cases[i].origin; const char* target = cases[i].target; bool expectation = cases[i].expectation; KURL originUrl(KURL(), origin); RefPtr<SecurityOrigin> securityOrigin(SecurityOrigin::create(originUrl)); KURL targetUrl(KURL(), target); EXPECT_EQ(expectation, MixedContentChecker::isMixedContent(securityOrigin.get(), targetUrl)) << "Origin: " << origin << ", Target: " << target << ", Expectation: " << expectation; } }
TEST(MixedContentCheckerTest, IsMixedContent) { struct TestCase { const char* origin; const char* target; bool expectation; } cases[] = { {"http://example.com/foo", "http://example.com/foo", false}, {"http://example.com/foo", "https://example.com/foo", false}, {"http://example.com/foo", "data:text/html,<p>Hi!</p>", false}, {"http://example.com/foo", "about:blank", false}, {"https://example.com/foo", "https://example.com/foo", false}, {"https://example.com/foo", "wss://example.com/foo", false}, {"https://example.com/foo", "data:text/html,<p>Hi!</p>", false}, {"https://example.com/foo", "http://127.0.0.1/", false}, {"https://example.com/foo", "http://[::1]/", false}, {"https://example.com/foo", "http://example.com/foo", true}, {"https://example.com/foo", "http://google.com/foo", true}, {"https://example.com/foo", "ws://example.com/foo", true}, {"https://example.com/foo", "ws://google.com/foo", true}, {"https://example.com/foo", "http://192.168.1.1/", true}, {"https://example.com/foo", "http://localhost/", true}, }; for (const auto& test : cases) { SCOPED_TRACE(::testing::Message() << "Origin: " << test.origin << ", Target: " << test.target << ", Expectation: " << test.expectation); KURL originUrl(KURL(), test.origin); RefPtr<SecurityOrigin> securityOrigin(SecurityOrigin::create(originUrl)); KURL targetUrl(KURL(), test.target); EXPECT_EQ(test.expectation, MixedContentChecker::isMixedContent(securityOrigin.get(), targetUrl)); } }
void KFileItem::run( QWidget* parentWidget ) const { (void) new KRun( targetUrl(), parentWidget, d->m_fileMode, d->m_bIsLocalUrl ); }