LCOV - code coverage report
Current view: top level - dom/media/imagecapture - CaptureTask.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 2 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim:set ts=2 sw=2 sts=2 et cindent: */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #ifndef CAPTURETASK_H
       8             : #define CAPTURETASK_H
       9             : 
      10             : #include "MediaStreamGraph.h"
      11             : #include "MediaStreamListener.h"
      12             : #include "PrincipalChangeObserver.h"
      13             : #include "MediaStreamVideoSink.h"
      14             : 
      15             : namespace mozilla {
      16             : 
      17             : namespace dom {
      18             : class Blob;
      19             : class ImageCapture;
      20             : class MediaStreamTrack;
      21             : } // namespace dom
      22             : 
      23             : /**
      24             :  * CaptureTask retrieves image from MediaStream and encodes the image to jpeg in
      25             :  * ImageEncoder. The whole procedures start at AttachTrack(), it will add this
      26             :  * class into MediaStream and retrieves an image in MediaStreamGraph thread.
      27             :  * Once the image is retrieved, it will be sent to ImageEncoder and the encoded
      28             :  * blob will be sent out via encoder callback in main thread.
      29             :  *
      30             :  * CaptureTask holds a reference of ImageCapture to ensure ImageCapture won't be
      31             :  * released during the period of the capturing process described above.
      32             :  */
      33             : class CaptureTask : public MediaStreamVideoSink,
      34             :                     public dom::PrincipalChangeObserver<dom::MediaStreamTrack>
      35             : {
      36             : public:
      37             :   class MediaStreamEventListener;
      38             : 
      39             :   // MediaStreamVideoSink methods.
      40             :   void SetCurrentFrames(const VideoSegment& aSegment) override;
      41           0 :   void ClearFrames() override {}
      42             : 
      43             :   // PrincipalChangeObserver<MediaStreamTrack> method.
      44             :   void PrincipalChanged(dom::MediaStreamTrack* aMediaStreamTrack) override;
      45             : 
      46             :   // CaptureTask methods.
      47             : 
      48             :   // It is called when aBlob is ready to post back to script in company with
      49             :   // aRv == NS_OK. If aRv is not NS_OK, it will post an error event to script.
      50             :   //
      51             :   // Note:
      52             :   //   this function should be called on main thread.
      53             :   nsresult TaskComplete(already_AddRefed<dom::Blob> aBlob, nsresult aRv);
      54             : 
      55             :   // Add listeners into MediaStreamTrack and PrincipalChangeObserver.
      56             :   // It should be on main thread only.
      57             :   void AttachTrack();
      58             : 
      59             :   // Remove listeners from MediaStreamTrack and PrincipalChangeObserver.
      60             :   // It should be on main thread only.
      61             :   void DetachTrack();
      62             : 
      63             :   // CaptureTask should be created on main thread.
      64             :   explicit CaptureTask(dom::ImageCapture* aImageCapture);
      65             : 
      66             : protected:
      67           0 :   virtual ~CaptureTask() {}
      68             : 
      69             :   // Post a runnable on main thread to end this task and call TaskComplete to post
      70             :   // error event to script. It is called off-main-thread.
      71             :   void PostTrackEndEvent();
      72             : 
      73             :   // The ImageCapture associates with this task. This reference count should not
      74             :   // change in this class unless it clears this reference after a blob or error
      75             :   // event to script.
      76             :   RefPtr<dom::ImageCapture> mImageCapture;
      77             : 
      78             :   RefPtr<MediaStreamEventListener> mEventListener;
      79             : 
      80             :   // True when an image is retrieved from MediaStreamGraph or MediaStreamGraph
      81             :   // sends a track finish, end, or removed event.
      82             :   bool mImageGrabbedOrTrackEnd;
      83             : 
      84             :   // True after MediaStreamTrack principal changes while waiting for a photo
      85             :   // to finish and we should raise a security error.
      86             :   bool mPrincipalChanged;
      87             : };
      88             : 
      89             : } // namespace mozilla
      90             : 
      91             : #endif // CAPTURETASK_H

Generated by: LCOV version 1.13