LCOV - code coverage report
Current view: directory - content/html/content/src - nsMediaFragmentURIParser.h (source / functions) Found Hit Coverage
Test: app.info Lines: 4 0 0.0 %
Date: 2012-06-02 Functions: 4 0 0.0 %

       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                 : /* ***** BEGIN LICENSE BLOCK *****
       4                 :  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
       5                 :  *
       6                 :  * The contents of this file are subject to the Mozilla Public License Version
       7                 :  * 1.1 (the "License"); you may not use this file except in compliance with
       8                 :  * the License. You may obtain a copy of the License at
       9                 :  * http://www.mozilla.org/MPL/
      10                 :  *
      11                 :  * Software distributed under the License is distributed on an "AS IS" basis,
      12                 :  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
      13                 :  * for the specific language governing rights and limitations under the
      14                 :  * License.
      15                 :  *
      16                 :  * The Original Code is the media fragment URI parser.
      17                 :  *
      18                 :  * The Initial Developer of the Original Code is the Mozilla Foundation.
      19                 :  * Portions created by the Initial Developer are Copyright (C) 2011
      20                 :  * the Initial Developer. All Rights Reserved.
      21                 :  *
      22                 :  * Contributor(s):
      23                 :  *   Chris Double <chris.double@double.co.nz>
      24                 :  *
      25                 :  * Alternatively, the contents of this file may be used under the terms of
      26                 :  * either the GNU General Public License Version 2 or later (the "GPL"), or
      27                 :  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
      28                 :  * in which case the provisions of the GPL or the LGPL are applicable instead
      29                 :  * of those above. If you wish to allow use of your version of this file only
      30                 :  * under the terms of either the GPL or the LGPL, and not to allow others to
      31                 :  * use your version of this file under the terms of the MPL, indicate your
      32                 :  * decision by deleting the provisions above and replace them with the notice
      33                 :  * and other provisions required by the GPL or the LGPL. If you do not delete
      34                 :  * the provisions above, a recipient may use your version of this file under
      35                 :  * the terms of any one of the MPL, the GPL or the LGPL.
      36                 :  *
      37                 :  * ***** END LICENSE BLOCK ***** */
      38                 : #if !defined(nsMediaFragmentURIParser_h__)
      39                 : #define nsMediaFragmentURIParser_h__
      40                 : 
      41                 : #include "nsString.h"
      42                 : #include "nsTArray.h"
      43                 : 
      44                 : // Class to handle parsing of a W3C media fragment URI as per
      45                 : // spec at: http://www.w3.org/TR/media-frags/
      46                 : // Only the temporaral URI portion of the spec is implemented.
      47                 : // To use:
      48                 : // a) Construct an instance with the URI containing the fragment
      49                 : // b) Call Parse() method to parse the fragment
      50                 : // c) Use GetStartTime() and GetEndTime() to get the start/end
      51                 : //    times from any temporal fragment included in the URI.
      52                 : class nsMediaFragmentURIParser
      53               0 : {
      54                 :   struct Pair
      55               0 :   {
      56               0 :     Pair(const nsAString& aName, const nsAString& aValue) :
      57               0 :       mName(aName), mValue(aValue) { }
      58                 : 
      59                 :     nsString mName;
      60                 :     nsString mValue;
      61                 :   };
      62                 : 
      63                 : public:
      64                 :   // Create a parser, with the URL including fragment identifier
      65                 :   // in 'aSpec'.
      66                 :   nsMediaFragmentURIParser(const nsCString& aSpec);
      67                 : 
      68                 :   // Parse the URI fragment included in the URI that was passed
      69                 :   // on construction.
      70                 :   void Parse();
      71                 : 
      72                 :   // Return the start time in seconds obtained from the URI
      73                 :   // fragment. If no start time or no valid temporal fragment
      74                 :   // exists then 0 is returned.
      75                 :   double GetStartTime();
      76                 : 
      77                 :   // Return the end time in seconds obtained from the URI
      78                 :   // fragment. If no end time or no valid temporal fragment
      79                 :   // exists then -1 is returned.
      80                 :   double GetEndTime();
      81                 : 
      82                 : private:
      83                 :   // The following methods parse the fragment as per the media
      84                 :   // fragments specification. 'aString' contains the remaining
      85                 :   // fragment data to be parsed. The method returns true
      86                 :   // if the parse was successful and leaves the remaining unparsed
      87                 :   // data in 'aString'. If the parse fails then false is returned
      88                 :   // and 'aString' is left as it was when called.
      89                 :   bool ParseNPT(nsDependentSubstring& aString, double& aStart, double& aEnd);
      90                 :   bool ParseNPTTime(nsDependentSubstring& aString, double& aTime);
      91                 :   bool ParseNPTSec(nsDependentSubstring& aString, double& aSec);
      92                 :   bool ParseNPTFraction(nsDependentSubstring& aString, double& aFraction);
      93                 :   bool ParseNPTMMSS(nsDependentSubstring& aString, double& aTime);
      94                 :   bool ParseNPTHHMMSS(nsDependentSubstring& aString, double& aTime);
      95                 :   bool ParseNPTHH(nsDependentSubstring& aString, PRUint32& aHour);
      96                 :   bool ParseNPTMM(nsDependentSubstring& aString, PRUint32& aMinute);
      97                 :   bool ParseNPTSS(nsDependentSubstring& aString, PRUint32& aSecond);
      98                 : 
      99                 :   // Fragment portion of the URI given on construction
     100                 :   nsCAutoString mHash;
     101                 : 
     102                 :   // An array of name/value pairs containing the media fragments
     103                 :   // parsed from the URI.
     104                 :   nsTArray<Pair> mFragments;
     105                 : };
     106                 : 
     107                 : #endif

Generated by: LCOV version 1.7