|  | // Copyright 2018 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef SQL_INTERNAL_API_TOKEN_H_ | 
|  | #define SQL_INTERNAL_API_TOKEN_H_ | 
|  |  | 
|  | namespace base { | 
|  | class FilePath; | 
|  | }  // namespace base | 
|  |  | 
|  | namespace sql { | 
|  |  | 
|  | namespace test { | 
|  | struct ColumnInfo; | 
|  | bool CorruptSizeInHeader(const base::FilePath&); | 
|  | }  // namespace test | 
|  |  | 
|  | // Restricts access to APIs internal to the //sql package. | 
|  | // | 
|  | // This implements Java's package-private via the passkey idiom. | 
|  | class InternalApiToken { | 
|  | private: | 
|  | // Must NOT be =default to disallow creation by uniform initialization. | 
|  | InternalApiToken() {} | 
|  | InternalApiToken(const InternalApiToken&) = default; | 
|  |  | 
|  | friend class Database; | 
|  | friend class DatabaseTestPeer; | 
|  | friend class Recovery; | 
|  | friend class Transaction; | 
|  | friend struct test::ColumnInfo; | 
|  | friend bool test::CorruptSizeInHeader(const base::FilePath&); | 
|  | }; | 
|  |  | 
|  | }  // namespace sql | 
|  |  | 
|  | #endif  // SQL_INTERNAL_API_TOKEN_H_ |