Home | History | Annotate | Download | only in web
      1 /*
      2  * Copyright (C) 2012 Google Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  *  * Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  *  * Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #ifndef WebSpeechRecognitionHandle_h
     27 #define WebSpeechRecognitionHandle_h
     28 
     29 #include "../platform/WebCommon.h"
     30 #include "../platform/WebPrivatePtr.h"
     31 
     32 namespace WebCore {
     33 class SpeechRecognition;
     34 }
     35 
     36 namespace WebKit {
     37 
     38 class WebSpeechRecognitionResult;
     39 class WebString;
     40 
     41 // WebSpeechRecognitionHandle is used by WebSpeechRecognizer to identify a
     42 // recognition session, and by WebSpeechRecognizerClient to route
     43 // recognition events.
     44 class WebSpeechRecognitionHandle {
     45 public:
     46     ~WebSpeechRecognitionHandle() { reset(); }
     47     WebSpeechRecognitionHandle() { }
     48 
     49     WebSpeechRecognitionHandle(const WebSpeechRecognitionHandle& other) { assign(other); }
     50     WebSpeechRecognitionHandle& operator=(const WebSpeechRecognitionHandle& other)
     51     {
     52         assign(other);
     53         return *this;
     54     }
     55 
     56     WEBKIT_EXPORT void reset();
     57     WEBKIT_EXPORT void assign(const WebSpeechRecognitionHandle&);
     58 
     59     // Comparison functions are provided so that WebSpeechRecognitionHandle objects
     60     // can be stored in a hash map.
     61     WEBKIT_EXPORT bool equals(const WebSpeechRecognitionHandle&) const;
     62     WEBKIT_EXPORT bool lessThan(const WebSpeechRecognitionHandle&) const;
     63 
     64 #if WEBKIT_IMPLEMENTATION
     65     WebSpeechRecognitionHandle(const WTF::PassRefPtr<WebCore::SpeechRecognition>&);
     66     WebSpeechRecognitionHandle& operator=(const WTF::PassRefPtr<WebCore::SpeechRecognition>&);
     67     operator WTF::PassRefPtr<WebCore::SpeechRecognition>() const;
     68 #endif
     69 
     70 private:
     71     WebPrivatePtr<WebCore::SpeechRecognition> m_private;
     72 };
     73 
     74 inline bool operator==(const WebSpeechRecognitionHandle& a, const WebSpeechRecognitionHandle& b)
     75 {
     76     return a.equals(b);
     77 }
     78 
     79 inline bool operator!=(const WebSpeechRecognitionHandle& a, const WebSpeechRecognitionHandle& b)
     80 {
     81     return !(a == b);
     82 }
     83 
     84 inline bool operator<(const WebSpeechRecognitionHandle& a, const WebSpeechRecognitionHandle& b)
     85 {
     86     return a.lessThan(b);
     87 }
     88 
     89 } // namespace WebKit
     90 
     91 #endif // WebSpeechRecognitionHandle_h
     92