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 WebContentDecryptionModuleResult(const WebContentDecryptionModuleResult & o)31 WebContentDecryptionModuleResult(const WebContentDecryptionModuleResult& o) 32 { 33 assign(o); 34 } 35 ~WebContentDecryptionModuleResult()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