blob: 4b2a1e5ea27f8495701066c88ecfe98b8de0c000 [file] [log] [blame]
// Copyright 2019 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 "third_party/blink/renderer/core/loader/resource_load_observer_for_frame.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/renderer/core/loader/empty_clients.h"
#include "third_party/blink/renderer/core/loader/frame_or_imported_document.h"
#include "third_party/blink/renderer/core/testing/dummy_page_holder.h"
#include "third_party/blink/renderer/platform/heap/heap.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_request.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_response.h"
#include "third_party/blink/renderer/platform/loader/testing/mock_resource.h"
#include "third_party/blink/renderer/platform/loader/testing/test_resource_fetcher_properties.h"
namespace blink {
// Tests that when a resource with certificate errors is loaded from the memory
// cache, the embedder is notified.
TEST(ResourceLoadObserverForFrameTest, MemoryCacheCertificateError) {
class MockFrameClient final : public EmptyLocalFrameClient {
public:
void DidDisplayContentWithCertificateErrors() override {
did_display_content_with_certificate_errors_called_ = true;
}
bool IsDidDisplayContentWithCertificateErrorsCalled() const {
return did_display_content_with_certificate_errors_called_;
}
private:
bool did_display_content_with_certificate_errors_called_ = false;
};
auto* client = MakeGarbageCollected<MockFrameClient>();
auto dummy_page_holder =
std::make_unique<DummyPageHolder>(IntSize(), nullptr, client);
LocalFrame& frame = dummy_page_holder->GetFrame();
auto* observer = MakeGarbageCollected<ResourceLoadObserverForFrame>(
*MakeGarbageCollected<FrameOrImportedDocument>(
*frame.GetDocument()->Loader(), *frame.GetDocument()),
*MakeGarbageCollected<TestResourceFetcherProperties>());
KURL url("https://www.example.com/");
ResourceRequest resource_request(url);
resource_request.SetRequestContext(mojom::RequestContextType::IMAGE);
ResourceResponse response(url);
response.SetHasMajorCertificateErrors(true);
auto* resource = MakeGarbageCollected<MockResource>(resource_request);
resource->SetResponse(response);
EXPECT_FALSE(client->IsDidDisplayContentWithCertificateErrorsCalled());
observer->DidReceiveResponse(
99, resource_request, resource->GetResponse(), resource,
ResourceLoadObserver::ResponseSource::kFromMemoryCache);
EXPECT_TRUE(client->IsDidDisplayContentWithCertificateErrorsCalled());
}
} // namespace blink