/*
 * Copyright 2017 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

// Nothing to see here.
//
// We just need to keep this file around until we do the song and dance
// to stop explicitly removing it from Chromium's GN build.
