// 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.

#ifndef MEDIA_MOJO_INTERFACES_MEDIA_SERVICE_MOJOM_FORWARD_H_
#define MEDIA_MOJO_INTERFACES_MEDIA_SERVICE_MOJOM_FORWARD_H_





#include "mojo/public/cpp/bindings/associated_interface_ptr.h"
#include "mojo/public/cpp/bindings/associated_interface_ptr_info.h"
#include "mojo/public/cpp/bindings/associated_interface_request.h"
#include "mojo/public/cpp/bindings/interface_ptr.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/lib/control_message_handler.h"
#include "mojo/public/cpp/bindings/pending_associated_receiver.h"
#include "mojo/public/cpp/bindings/pending_associated_remote.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h"
#include "mojo/public/cpp/bindings/thread_safe_interface_ptr.h"



#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif


namespace media {
namespace mojom {
class MediaService;

// @generated_from: media.mojom.MediaService
using MediaServicePtr = mojo::InterfacePtr<MediaService>;
using MediaServicePtrInfo = mojo::InterfacePtrInfo<MediaService>;
using ThreadSafeMediaServicePtr =
    mojo::ThreadSafeInterfacePtr<MediaService>;

// @generated_from: media.mojom.MediaService
using MediaServiceRequest = mojo::InterfaceRequest<MediaService>;

// @generated_from: media.mojom.MediaService
using MediaServiceAssociatedPtr =
    mojo::AssociatedInterfacePtr<MediaService>;
using ThreadSafeMediaServiceAssociatedPtr =
    mojo::ThreadSafeAssociatedInterfacePtr<MediaService>;
using MediaServiceAssociatedPtrInfo =
    mojo::AssociatedInterfacePtrInfo<MediaService>;

// @generated_from: media.mojom.MediaService
using MediaServiceAssociatedRequest =
    mojo::AssociatedInterfaceRequest<MediaService>;




}  // namespace mojom
}  // namespace media

#endif  // MEDIA_MOJO_INTERFACES_MEDIA_SERVICE_MOJOM_FORWARD_H_
/* Metadata comment
eyJtZXRhIjogW3siZW5kIjogMTIzNywgImJlZ2luIjogMTIyMiwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogIm1lZGlhLm1vam9tLk1lZGlhU2VydmljZSJ9fSwgeyJl
bmQiOiAxNTMxLCAiYmVnaW4iOiAxNTE5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1
bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz
aWduYXR1cmUiOiAibWVkaWEubW9qb20uTWVkaWFTZXJ2aWNlIn19XSwgInR5cGUiOiAia3l0aGUw
In0=
*/