blob: 246a2c3a3e0c0221f8dc2d497f6754c7b348c0b4 [file] [log] [blame]
// Copyright 2018 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 "services/network/public/cpp/url_request_mojom_traits.h"
#include "base/test/gtest_util.h"
#include "mojo/public/cpp/base/unguessable_token_mojom_traits.h"
#include "mojo/public/cpp/test_support/test_utils.h"
#include "services/network/public/cpp/http_request_headers_mojom_traits.h"
#include "services/network/public/cpp/network_ipc_param_traits.h"
#include "services/network/public/mojom/url_loader.mojom.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/mojom/origin_mojom_traits.h"
#include "url/mojom/url_gurl_mojom_traits.h"
namespace network {
namespace {
TEST(URLRequestMojomTraitsTest, Roundtrips_URLRequestReferrerPolicy) {
for (auto referrer_policy :
{net::URLRequest::ReferrerPolicy::
CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
net::URLRequest::ReferrerPolicy::
REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
net::URLRequest::ReferrerPolicy::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN,
net::URLRequest::ReferrerPolicy::NEVER_CLEAR_REFERRER,
net::URLRequest::ReferrerPolicy::ORIGIN,
net::URLRequest::ReferrerPolicy::
CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN,
net::URLRequest::ReferrerPolicy::
ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
net::URLRequest::ReferrerPolicy::NO_REFERRER}) {
int32_t serialized = -1;
using URLRequestReferrerPolicySerializer =
mojo::internal::Serializer<mojom::URLRequestReferrerPolicy,
net::URLRequest::ReferrerPolicy>;
URLRequestReferrerPolicySerializer::Serialize(referrer_policy, &serialized);
EXPECT_EQ(referrer_policy, serialized);
net::URLRequest::ReferrerPolicy deserialized;
URLRequestReferrerPolicySerializer::Deserialize(serialized, &deserialized);
EXPECT_EQ(serialized, deserialized);
}
}
TEST(URLRequestMojomTraitsTest, Roundtrips_ResourceRequest) {
network::ResourceRequest original;
original.method = "POST";
original.url = GURL("https://example.com/resources/dummy.xml");
original.site_for_cookies = GURL("https://example.com/index.html");
original.top_frame_origin = url::Origin::Create(original.url);
original.attach_same_site_cookies = true;
original.update_first_party_url_on_redirect = false;
original.request_initiator = url::Origin::Create(original.url);
original.referrer = GURL("https://referrer.com/");
original.referrer_policy =
net::URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN;
original.is_prerendering = false;
original.headers.SetHeader("Accept", "text/xml");
original.requested_with_header = "dummy_requested_with_header";
original.client_data_header = "dummy_client_data_header";
original.load_flags = 3;
original.allow_credentials = true;
original.plugin_child_id = 5;
original.resource_type = 2;
original.priority = net::IDLE;
original.appcache_host_id = 3;
original.should_reset_appcache = true;
original.is_external_request = false;
original.cors_preflight_policy =
mojom::CorsPreflightPolicy::kConsiderPreflight;
original.service_worker_provider_id = -1;
original.originated_from_service_worker = false;
original.skip_service_worker = false;
original.fetch_request_mode = mojom::FetchRequestMode::kNoCors;
original.fetch_credentials_mode = mojom::FetchCredentialsMode::kInclude;
original.fetch_redirect_mode = mojom::FetchRedirectMode::kFollow;
original.fetch_integrity = "dummy_fetch_integrity";
original.fetch_request_context_type = 0;
original.fetch_frame_type = mojom::RequestContextFrameType::kAuxiliary;
original.keepalive = true;
original.has_user_gesture = false;
original.enable_load_timing = true;
original.enable_upload_progress = false;
original.do_not_prompt_for_login = true;
original.render_frame_id = 5;
original.is_main_frame = true;
original.transition_type = 0;
original.allow_download = false;
original.report_raw_headers = true;
original.previews_state = 0;
original.initiated_in_secure_context = false;
original.upgrade_if_insecure = true;
original.is_revalidating = false;
original.throttling_profile_id = base::UnguessableToken::Create();
original.custom_proxy_pre_cache_headers.SetHeader("pre_x", "x_value");
original.custom_proxy_post_cache_headers.SetHeader("post_y", "y_value");
original.custom_proxy_use_alternate_proxy_list = true;
original.fetch_window_id = base::UnguessableToken::Create();
network::ResourceRequest copied;
EXPECT_TRUE(mojo::test::SerializeAndDeserialize<mojom::URLRequest>(&original,
&copied));
EXPECT_TRUE(original.EqualsForTesting(copied));
}
} // namespace
} // namespace network