LCOV - code coverage report
Current view: directory - objdir/ipc/ipdl - PContextWrapperChild.cpp (source / functions) Found Hit Coverage
Test: app.info Lines: 203 0 0.0 %
Date: 2012-06-02 Functions: 42 0 0.0 %

       1                 : //
       2                 : // Automatically generated by ipdlc.
       3                 : // Edit at your own risk
       4                 : //
       5                 : 
       6                 : 
       7                 : #include "mozilla/jsipc/PContextWrapperChild.h"
       8                 : 
       9                 : #include "mozilla/ipc/PTestShellChild.h"
      10                 : #include "mozilla/jsipc/PObjectWrapperChild.h"
      11                 : 
      12                 : typedef IPC::Message Message;
      13                 : typedef mozilla::ipc::RPCChannel Channel;
      14                 : typedef mozilla::ipc::RPCChannel::RPCListener ChannelListener;
      15                 : typedef base::ProcessHandle ProcessHandle;
      16                 : typedef mozilla::ipc::AsyncChannel AsyncChannel;
      17                 : typedef mozilla::ipc::SharedMemory SharedMemory;
      18                 : typedef mozilla::ipc::Trigger Trigger;
      19                 : typedef mozilla::ipc::ActorHandle ActorHandle;
      20                 : typedef mozilla::ipc::Shmem Shmem;
      21                 : using mozilla::ipc::PTestShellChild;
      22                 : using mozilla::jsipc::PObjectWrapperChild;
      23                 : 
      24                 : namespace mozilla {
      25                 : namespace jsipc {
      26                 : 
      27                 : 
      28                 : void
      29               0 : PContextWrapperChild::ActorDestroy(ActorDestroyReason why)
      30                 : {
      31               0 : }
      32                 : 
      33               0 : PContextWrapperChild::PContextWrapperChild() :
      34                 :     mId(0),
      35               0 :     mState(PContextWrapper::__Dead)
      36                 : {
      37               0 :     MOZ_COUNT_CTOR(PContextWrapperChild);
      38               0 : }
      39                 : 
      40               0 : PContextWrapperChild::~PContextWrapperChild()
      41                 : {
      42               0 :     MOZ_COUNT_DTOR(PContextWrapperChild);
      43               0 : }
      44                 : 
      45                 : PTestShellChild*
      46               0 : PContextWrapperChild::Manager()
      47                 : {
      48               0 :     return static_cast<PTestShellChild*>(mManager);
      49                 : }
      50                 : 
      51                 : void
      52               0 : PContextWrapperChild::ManagedPObjectWrapperChild(InfallibleTArray<PObjectWrapperChild*>& aArr) const
      53                 : {
      54               0 :     aArr = mManagedPObjectWrapperChild;
      55               0 : }
      56                 : 
      57                 : const InfallibleTArray<PObjectWrapperChild*>&
      58               0 : PContextWrapperChild::ManagedPObjectWrapperChild() const
      59                 : {
      60               0 :     return mManagedPObjectWrapperChild;
      61                 : }
      62                 : 
      63                 : PContextWrapper::State
      64               0 : PContextWrapperChild::state()
      65                 : {
      66               0 :     return mState;
      67                 : }
      68                 : 
      69                 : bool
      70               0 : PContextWrapperChild::Send__delete__(PContextWrapperChild* actor)
      71                 : {
      72               0 :     if ((!(actor))) {
      73               0 :         return false;
      74                 :     }
      75                 : 
      76               0 :     if ((!(actor))) {
      77               0 :         return false;
      78                 :     }
      79                 : 
      80               0 :     PContextWrapper::Msg___delete__* __msg = new PContextWrapper::Msg___delete__();
      81                 : 
      82               0 :     (actor)->Write(actor, __msg, false);
      83                 : 
      84               0 :     (__msg)->set_routing_id((actor)->mId);
      85                 : 
      86                 : 
      87               0 :     if (mozilla::ipc::LoggingEnabled()) {
      88               0 :         (__msg)->Log("[PContextWrapperChild] Sending ", stderr);
      89                 :     }
      90               0 :     if ((!(PContextWrapper::Transition((actor)->mState, Trigger(Trigger::Recv, PContextWrapper::Msg___delete____ID), (&((actor)->mState)))))) {
      91               0 :         NS_WARNING("bad state transition!");
      92                 :     }
      93                 : 
      94               0 :     bool __sendok = ((actor)->mChannel)->Send(__msg);
      95                 : 
      96               0 :     (actor)->DestroySubtree(Deletion);
      97               0 :     (actor)->DeallocSubtree();
      98               0 :     ((actor)->mManager)->RemoveManagee(PContextWrapperMsgStart, actor);
      99               0 :     return __sendok;
     100                 : }
     101                 : 
     102                 : PObjectWrapperChild*
     103               0 : PContextWrapperChild::SendPObjectWrapperConstructor(const bool& makeGlobal)
     104                 : {
     105               0 :     return SendPObjectWrapperConstructor(AllocPObjectWrapper(makeGlobal), makeGlobal);
     106                 : }
     107                 : 
     108                 : PObjectWrapperChild*
     109               0 : PContextWrapperChild::SendPObjectWrapperConstructor(
     110                 :         PObjectWrapperChild* actor,
     111                 :         const bool& makeGlobal)
     112                 : {
     113               0 :     if ((!(actor))) {
     114               0 :         return 0;
     115                 :     }
     116               0 :     (actor)->mId = Register(actor);
     117               0 :     (actor)->mManager = this;
     118               0 :     (actor)->mChannel = mChannel;
     119               0 :     (mManagedPObjectWrapperChild).InsertElementSorted(actor);
     120               0 :     (actor)->mState = mozilla::jsipc::PObjectWrapper::__Start;
     121                 : 
     122               0 :     PContextWrapper::Msg_PObjectWrapperConstructor* __msg = new PContextWrapper::Msg_PObjectWrapperConstructor();
     123                 : 
     124               0 :     Write(actor, __msg, false);
     125               0 :     Write(makeGlobal, __msg);
     126                 : 
     127               0 :     (__msg)->set_routing_id(mId);
     128                 : 
     129                 : 
     130               0 :     if (mozilla::ipc::LoggingEnabled()) {
     131               0 :         (__msg)->Log("[PContextWrapperChild] Sending ", stderr);
     132                 :     }
     133               0 :     if ((!(PContextWrapper::Transition(mState, Trigger(Trigger::Recv, PContextWrapper::Msg_PObjectWrapperConstructor__ID), (&(mState)))))) {
     134               0 :         NS_WARNING("bad state transition!");
     135                 :     }
     136                 : 
     137               0 :     bool __sendok = (mChannel)->Send(__msg);
     138               0 :     if ((!(__sendok))) {
     139               0 :         (actor)->DestroySubtree(FailedConstructor);
     140               0 :         (actor)->DeallocSubtree();
     141               0 :         ((actor)->mManager)->RemoveManagee(PObjectWrapperMsgStart, actor);
     142               0 :         return 0;
     143                 :     }
     144               0 :     return actor;
     145                 : }
     146                 : 
     147                 : int32
     148               0 : PContextWrapperChild::Register(ChannelListener* aRouted)
     149                 : {
     150               0 :     return (mManager)->Register(aRouted);
     151                 : }
     152                 : 
     153                 : int32
     154               0 : PContextWrapperChild::RegisterID(
     155                 :         ChannelListener* aRouted,
     156                 :         int32 aId)
     157                 : {
     158               0 :     return (mManager)->RegisterID(aRouted, aId);
     159                 : }
     160                 : 
     161                 : ChannelListener*
     162               0 : PContextWrapperChild::Lookup(int32 aId)
     163                 : {
     164               0 :     return (mManager)->Lookup(aId);
     165                 : }
     166                 : 
     167                 : void
     168               0 : PContextWrapperChild::Unregister(int32 aId)
     169                 : {
     170               0 :     return (mManager)->Unregister(aId);
     171                 : }
     172                 : 
     173                 : void
     174               0 : PContextWrapperChild::RemoveManagee(
     175                 :         int32 aProtocolId,
     176                 :         ChannelListener* aListener)
     177                 : {
     178               0 :     switch (aProtocolId) {
     179                 :     case PObjectWrapperMsgStart:
     180                 :         {
     181               0 :             PObjectWrapperChild* actor = static_cast<PObjectWrapperChild*>(aListener);
     182               0 :             NS_ABORT_IF_FALSE(((mManagedPObjectWrapperChild).NoIndex) != ((mManagedPObjectWrapperChild).BinaryIndexOf(actor)), "actor not managed by this!");
     183                 : 
     184               0 :             (mManagedPObjectWrapperChild).RemoveElementSorted(actor);
     185               0 :             DeallocPObjectWrapper(actor);
     186               0 :             return;
     187                 :         }
     188                 :     default:
     189                 :         {
     190               0 :             NS_RUNTIMEABORT("unreached");
     191               0 :             return;
     192                 :         }
     193                 :     }
     194                 : }
     195                 : 
     196                 : Shmem::SharedMemory*
     197               0 : PContextWrapperChild::CreateSharedMemory(
     198                 :         size_t aSize,
     199                 :         Shmem::SharedMemory::SharedMemoryType type,
     200                 :         bool unsafe,
     201                 :         Shmem::id_t* aId)
     202                 : {
     203               0 :     return (mManager)->CreateSharedMemory(aSize, type, unsafe, aId);
     204                 : }
     205                 : 
     206                 : bool
     207               0 : PContextWrapperChild::AdoptSharedMemory(
     208                 :         Shmem::SharedMemory* segment,
     209                 :         Shmem::id_t* aId)
     210                 : {
     211               0 :     return (mManager)->AdoptSharedMemory(segment, aId);
     212                 : }
     213                 : 
     214                 : Shmem::SharedMemory*
     215               0 : PContextWrapperChild::LookupSharedMemory(Shmem::id_t aId)
     216                 : {
     217               0 :     return (mManager)->LookupSharedMemory(aId);
     218                 : }
     219                 : 
     220                 : bool
     221               0 : PContextWrapperChild::IsTrackingSharedMemory(Shmem::SharedMemory* segment)
     222                 : {
     223               0 :     return (mManager)->IsTrackingSharedMemory(segment);
     224                 : }
     225                 : 
     226                 : bool
     227               0 : PContextWrapperChild::DestroySharedMemory(Shmem& aShmem)
     228                 : {
     229               0 :     return (mManager)->DestroySharedMemory(aShmem);
     230                 : }
     231                 : 
     232                 : ProcessHandle
     233               0 : PContextWrapperChild::OtherProcess() const
     234                 : {
     235               0 :     return (mManager)->OtherProcess();
     236                 : }
     237                 : 
     238                 : AsyncChannel*
     239               0 : PContextWrapperChild::GetIPCChannel()
     240                 : {
     241               0 :     return mChannel;
     242                 : }
     243                 : 
     244                 : PContextWrapperChild::Result
     245               0 : PContextWrapperChild::OnMessageReceived(const Message& __msg)
     246                 : {
     247               0 :     switch ((__msg).type()) {
     248                 :     case PContextWrapper::Reply___delete____ID:
     249                 :         {
     250               0 :             return MsgProcessed;
     251                 :         }
     252                 :     case PContextWrapper::Reply_PObjectWrapperConstructor__ID:
     253                 :         {
     254               0 :             return MsgProcessed;
     255                 :         }
     256                 :     default:
     257                 :         {
     258               0 :             return MsgNotKnown;
     259                 :         }
     260                 :     }
     261                 : }
     262                 : 
     263                 : PContextWrapperChild::Result
     264               0 : PContextWrapperChild::OnMessageReceived(
     265                 :         const Message& __msg,
     266                 :         Message*& __reply)
     267                 : {
     268               0 :     return MsgNotKnown;
     269                 : }
     270                 : 
     271                 : PContextWrapperChild::Result
     272               0 : PContextWrapperChild::OnCallReceived(
     273                 :         const Message& __msg,
     274                 :         Message*& __reply)
     275                 : {
     276               0 :     return MsgNotKnown;
     277                 : }
     278                 : 
     279                 : void
     280               0 : PContextWrapperChild::OnProcessingError(Result code)
     281                 : {
     282               0 :     NS_RUNTIMEABORT("`OnProcessingError' called on non-toplevel actor");
     283               0 : }
     284                 : 
     285                 : bool
     286               0 : PContextWrapperChild::OnReplyTimeout()
     287                 : {
     288               0 :     NS_RUNTIMEABORT("`OnReplyTimeout' called on non-toplevel actor");
     289               0 :     return false;
     290                 : }
     291                 : 
     292                 : void
     293               0 : PContextWrapperChild::OnChannelClose()
     294                 : {
     295               0 :     NS_RUNTIMEABORT("`OnClose' called on non-toplevel actor");
     296               0 : }
     297                 : 
     298                 : void
     299               0 : PContextWrapperChild::OnChannelError()
     300                 : {
     301               0 :     NS_RUNTIMEABORT("`OnError' called on non-toplevel actor");
     302               0 : }
     303                 : 
     304                 : void
     305               0 : PContextWrapperChild::OnChannelConnected(int32 pid)
     306                 : {
     307               0 :     NS_RUNTIMEABORT("'OnConnected' called on non-toplevel actor");
     308               0 : }
     309                 : 
     310                 : bool
     311               0 : PContextWrapperChild::AllocShmem(
     312                 :         size_t aSize,
     313                 :         Shmem::SharedMemory::SharedMemoryType aType,
     314                 :         Shmem* aMem)
     315                 : {
     316                 :     Shmem::id_t aId;
     317               0 :     nsAutoPtr<Shmem::SharedMemory> rawmem(CreateSharedMemory(aSize, aType, false, (&(aId))));
     318               0 :     if ((!(rawmem))) {
     319               0 :         return false;
     320                 :     }
     321                 : 
     322               0 :     (*(aMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), (rawmem).forget(), aId);
     323               0 :     return true;
     324                 : }
     325                 : 
     326                 : bool
     327               0 : PContextWrapperChild::AllocUnsafeShmem(
     328                 :         size_t aSize,
     329                 :         Shmem::SharedMemory::SharedMemoryType aType,
     330                 :         Shmem* aMem)
     331                 : {
     332                 :     Shmem::id_t aId;
     333               0 :     nsAutoPtr<Shmem::SharedMemory> rawmem(CreateSharedMemory(aSize, aType, true, (&(aId))));
     334               0 :     if ((!(rawmem))) {
     335               0 :         return false;
     336                 :     }
     337                 : 
     338               0 :     (*(aMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), (rawmem).forget(), aId);
     339               0 :     return true;
     340                 : }
     341                 : 
     342                 : bool
     343               0 : PContextWrapperChild::AdoptShmem(
     344                 :         Shmem& aMem,
     345                 :         Shmem* aOutMem)
     346                 : {
     347               0 :     Shmem::SharedMemory* rawmem = (aMem).Segment(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead());
     348               0 :     if (((!(rawmem))) || (IsTrackingSharedMemory(rawmem))) {
     349               0 :         NS_RUNTIMEABORT("bad Shmem");
     350                 :     }
     351                 : 
     352                 :     Shmem::id_t aId;
     353               0 :     if ((!(AdoptSharedMemory(rawmem, (&(aId)))))) {
     354               0 :         return false;
     355                 :     }
     356                 : 
     357               0 :     (*(aOutMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), rawmem, aId);
     358               0 :     return true;
     359                 : }
     360                 : 
     361                 : bool
     362               0 : PContextWrapperChild::DeallocShmem(Shmem& aMem)
     363                 : {
     364               0 :     bool ok = DestroySharedMemory(aMem);
     365               0 :     (aMem).forget(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead());
     366               0 :     return ok;
     367                 : }
     368                 : 
     369                 : void
     370               0 : PContextWrapperChild::FatalError(const char* const msg) const
     371                 : {
     372                 :     // Virtual method to prevent inlining.
     373                 :     // This give us better error reporting.
     374                 :     // See bug 589371
     375                 : 
     376               0 :     NS_ERROR("IPDL error:");
     377               0 :     NS_ERROR(msg);
     378                 : 
     379               0 :     NS_RUNTIMEABORT("[PContextWrapperChild] abort()ing as a result");
     380               0 : }
     381                 : 
     382                 : void
     383               0 : PContextWrapperChild::DestroySubtree(ActorDestroyReason why)
     384                 : {
     385                 :     // Unregister from our manager.
     386               0 :     Unregister(mId);
     387               0 :     mId = 1;
     388                 : 
     389               0 :     ActorDestroyReason subtreewhy = (((why) == (Deletion)) || ((why) == (FailedConstructor)) ? AncestorDeletion : why);
     390                 : 
     391                 :     {
     392                 :         // Recursively shutting down PObjectWrapper kids
     393               0 :         InfallibleTArray<PObjectWrapperChild*> kids = mManagedPObjectWrapperChild;
     394               0 :         for (uint32 i = 0; (i) < ((kids).Length()); (++(i))) {
     395               0 :             (kids[i])->DestroySubtree(subtreewhy);
     396                 :         }
     397                 :     }
     398                 : 
     399                 :     // Finally, destroy "us".
     400               0 :     ActorDestroy(why);
     401               0 : }
     402                 : 
     403                 : void
     404               0 : PContextWrapperChild::DeallocSubtree()
     405                 : {
     406                 :     {
     407                 :         // Recursively deleting PObjectWrapper kids
     408               0 :         InfallibleTArray<PObjectWrapperChild*>& kids = mManagedPObjectWrapperChild;
     409               0 :         for (uint32 i = 0; (i) < ((kids).Length()); (++(i))) {
     410               0 :             (kids[i])->DeallocSubtree();
     411                 :         }
     412                 : 
     413               0 :         for (uint32 i = 0; (i) < ((kids).Length()); (++(i))) {
     414               0 :             DeallocPObjectWrapper(kids[i]);
     415                 :         }
     416               0 :         (mManagedPObjectWrapperChild).Clear();
     417                 :     }
     418               0 : }
     419                 : 
     420                 : void
     421               0 : PContextWrapperChild::Write(
     422                 :         PObjectWrapperChild* __v,
     423                 :         Message* __msg,
     424                 :         bool __nullable)
     425                 : {
     426                 :     int32 id;
     427               0 :     if ((!(__v))) {
     428               0 :         if ((!(__nullable))) {
     429               0 :             NS_RUNTIMEABORT("NULL actor value passed to non-nullable param");
     430                 :         }
     431               0 :         id = 0;
     432                 :     }
     433                 :     else {
     434               0 :         id = (__v)->mId;
     435               0 :         if ((1) == (id)) {
     436               0 :             NS_RUNTIMEABORT("actor has been |delete|d");
     437                 :         }
     438                 :     }
     439                 : 
     440               0 :     Write(id, __msg);
     441               0 : }
     442                 : 
     443                 : bool
     444               0 : PContextWrapperChild::Read(
     445                 :         PObjectWrapperChild** __v,
     446                 :         const Message* __msg,
     447                 :         void** __iter,
     448                 :         bool __nullable)
     449                 : {
     450                 :     int32 id;
     451               0 :     if ((!(Read((&(id)), __msg, __iter)))) {
     452               0 :         return false;
     453                 :     }
     454               0 :     if (((1) == (id)) || (((0) == (id)) && ((!(__nullable))))) {
     455               0 :         return false;
     456                 :     }
     457                 : 
     458               0 :     if ((0) == (id)) {
     459               0 :         (*(__v)) = 0;
     460                 :     }
     461                 :     else {
     462               0 :         (*(__v)) = static_cast<PObjectWrapperChild*>(Lookup(id));
     463               0 :         if ((!((*(__v))))) {
     464               0 :             return false;
     465                 :         }
     466                 :     }
     467               0 :     return true;
     468                 : }
     469                 : 
     470                 : void
     471               0 : PContextWrapperChild::Write(
     472                 :         PContextWrapperChild* __v,
     473                 :         Message* __msg,
     474                 :         bool __nullable)
     475                 : {
     476                 :     int32 id;
     477               0 :     if ((!(__v))) {
     478               0 :         if ((!(__nullable))) {
     479               0 :             NS_RUNTIMEABORT("NULL actor value passed to non-nullable param");
     480                 :         }
     481               0 :         id = 0;
     482                 :     }
     483                 :     else {
     484               0 :         id = (__v)->mId;
     485               0 :         if ((1) == (id)) {
     486               0 :             NS_RUNTIMEABORT("actor has been |delete|d");
     487                 :         }
     488                 :     }
     489                 : 
     490               0 :     Write(id, __msg);
     491               0 : }
     492                 : 
     493                 : bool
     494               0 : PContextWrapperChild::Read(
     495                 :         PContextWrapperChild** __v,
     496                 :         const Message* __msg,
     497                 :         void** __iter,
     498                 :         bool __nullable)
     499                 : {
     500                 :     int32 id;
     501               0 :     if ((!(Read((&(id)), __msg, __iter)))) {
     502               0 :         return false;
     503                 :     }
     504               0 :     if (((1) == (id)) || (((0) == (id)) && ((!(__nullable))))) {
     505               0 :         return false;
     506                 :     }
     507                 : 
     508               0 :     if ((0) == (id)) {
     509               0 :         (*(__v)) = 0;
     510                 :     }
     511                 :     else {
     512               0 :         (*(__v)) = static_cast<PContextWrapperChild*>(Lookup(id));
     513               0 :         if ((!((*(__v))))) {
     514               0 :             return false;
     515                 :         }
     516                 :     }
     517               0 :     return true;
     518                 : }
     519                 : 
     520                 : 
     521                 : 
     522                 : } // namespace jsipc
     523                 : } // namespace mozilla

Generated by: LCOV version 1.7