This file is indexed.

/usr/include/firefox-esr-52/mozilla/ipc/BackgroundParent.h is in firefox-esr-dev 52.8.1esr-1~deb8u1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef mozilla_ipc_backgroundparent_h__
#define mozilla_ipc_backgroundparent_h__

#include "base/process.h"
#include "mozilla/Attributes.h"
#include "mozilla/ipc/Transport.h"

template <class> struct already_AddRefed;

namespace mozilla {
namespace dom {

class BlobImpl;
class ContentParent;
class PBlobParent;

} // namespace dom

namespace ipc {

class PBackgroundParent;

// This class is not designed for public consumption beyond the few static
// member functions.
class BackgroundParent final
{
  friend class mozilla::dom::ContentParent;

  typedef base::ProcessId ProcessId;
  typedef mozilla::dom::BlobImpl BlobImpl;
  typedef mozilla::dom::ContentParent ContentParent;
  typedef mozilla::ipc::Transport Transport;

public:
  // This function allows the caller to determine if the given parent actor
  // corresponds to a child actor from another process or a child actor from a
  // different thread in the same process.
  // This function may only be called on the background thread.
  static bool
  IsOtherProcessActor(PBackgroundParent* aBackgroundActor);

  // This function returns the ContentParent associated with the parent actor if
  // the parent actor corresponds to a child actor from another process. If the
  // parent actor corresponds to a child actor from a different thread in the
  // same process then this function returns null.
  // This function may only be called on the background thread. However,
  // ContentParent is not threadsafe and the returned pointer may not be used on
  // any thread other than the main thread. Callers must take care to use (and
  // release) the returned pointer appropriately.
  static already_AddRefed<ContentParent>
  GetContentParent(PBackgroundParent* aBackgroundActor);

  static mozilla::dom::PBlobParent*
  GetOrCreateActorForBlobImpl(PBackgroundParent* aBackgroundActor,
                              BlobImpl* aBlobImpl);

  // Get a value that represents the ContentParent associated with the parent
  // actor for comparison. The value is not guaranteed to uniquely identify the
  // ContentParent after the ContentParent has died. This function may only be
  // called on the background thread.
  static intptr_t
  GetRawContentParentForComparison(PBackgroundParent* aBackgroundActor);

private:
  // Only called by ContentParent for cross-process actors.
  static PBackgroundParent*
  Alloc(ContentParent* aContent,
        Transport* aTransport,
        ProcessId aOtherProcess);
};

// Implemented in BackgroundImpl.cpp.
bool
IsOnBackgroundThread();

#ifdef DEBUG

// Implemented in BackgroundImpl.cpp.
void
AssertIsOnBackgroundThread();

#else

inline void
AssertIsOnBackgroundThread()
{ }

#endif // DEBUG

inline void
AssertIsInMainProcess()
{
  MOZ_ASSERT(XRE_IsParentProcess());
}

} // namespace ipc
} // namespace mozilla

#endif // mozilla_ipc_backgroundparent_h__