Home | History | Annotate | Download | only in platform
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef WebContentDecryptionModuleResult_h
      6 #define WebContentDecryptionModuleResult_h
      7 
      8 #include "WebCommon.h"
      9 #include "WebContentDecryptionModuleException.h"
     10 #include "WebPrivatePtr.h"
     11 
     12 namespace blink {
     13 
     14 class ContentDecryptionModuleResult;
     15 class WebString;
     16 
     17 class WebContentDecryptionModuleResult {
     18 public:
     19     enum SessionStatus {
     20         // New session has been initialized.
     21         NewSession,
     22 
     23         // CDM could not find the requested session.
     24         SessionNotFound,
     25 
     26         // CDM already has a non-closed session that matches the provided
     27         // parameters.
     28         SessionAlreadyExists,
     29     };
     30 
     31     WebContentDecryptionModuleResult(const WebContentDecryptionModuleResult& o)
     32     {
     33         assign(o);
     34     }
     35 
     36     ~WebContentDecryptionModuleResult()
     37     {
     38         reset();
     39     }
     40 
     41     WebContentDecryptionModuleResult& operator=(const WebContentDecryptionModuleResult& o)
     42     {
     43         assign(o);
     44         return *this;
     45     }
     46 
     47     // Called when the CDM completes an operation and has no additional data to
     48     // pass back.
     49     BLINK_PLATFORM_EXPORT void complete();
     50 
     51     // Called when the CDM completes a session operation.
     52     BLINK_PLATFORM_EXPORT void completeWithSession(SessionStatus);
     53 
     54     // Called when the operation fails.
     55     BLINK_PLATFORM_EXPORT void completeWithError(WebContentDecryptionModuleException, unsigned long systemCode, const WebString& message);
     56 
     57 #if INSIDE_BLINK
     58     BLINK_PLATFORM_EXPORT explicit WebContentDecryptionModuleResult(ContentDecryptionModuleResult*);
     59 #endif
     60 
     61 private:
     62     BLINK_PLATFORM_EXPORT void reset();
     63     BLINK_PLATFORM_EXPORT void assign(const WebContentDecryptionModuleResult&);
     64 
     65     WebPrivatePtr<ContentDecryptionModuleResult> m_impl;
     66 };
     67 
     68 } // namespace blink
     69 
     70 #endif // WebContentDecryptionModuleSession_h
     71