// Copyright 2021 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 "content/browser/conversions/sql_utils.h" #include "base/check.h" #include "url/gurl.h" #include "url/origin.h" namespace content { std::string SerializeOrigin(const url::Origin& origin) { // Conversion API is only designed to be used for secure // contexts (targets and reporting endpoints). We should have filtered out bad // origins at a higher layer. DCHECK(!origin.opaque()); return origin.Serialize(); } url::Origin DeserializeOrigin(const std::string& origin) { return url::Origin::Create(GURL(origin)); } int64_t SerializeImpressionOrConversionData(uint64_t data) { // There is no `sql::Statement::BindUint64()` method, so we reinterpret the // bits of `data` as an `int64_t`, which is safe because the value is opaque: // it is never used with arithmetic or comparison operations in the DB, only // stored and retrieved. return static_cast(data); } uint64_t DeserializeImpressionOrConversionData(int64_t data) { // There is no `sql::Statement::ColumnUint64()` method, so we reinterpret the // bits of `data` as a `uint64_t`, which is safe because the value is opaque: // it is never used with arithmetic or comparison operations in the DB, only // stored and retrieved. return static_cast(data); } } // namespace content