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 COMPONENTS_NACL_RENDERER_NEXE_PROGRESS_EVENT_H_ 6 #define COMPONENTS_NACL_RENDERER_NEXE_PROGRESS_EVENT_H_ 7 8 #include <string> 9 10 #include "ppapi/c/pp_instance.h" 11 #include "ppapi/c/private/ppb_nacl_private.h" 12 13 namespace nacl { 14 15 // See http://www.w3.org/TR/progress-events/ for more details on progress 16 // events. 17 struct ProgressEvent { 18 explicit ProgressEvent(PP_NaClEventType event_type_param) 19 : event_type(event_type_param), 20 length_is_computable(false), 21 loaded_bytes(0), 22 total_bytes(0) { 23 } 24 25 ProgressEvent(PP_NaClEventType event_type_param, 26 const std::string& resource_url_param, 27 bool length_is_computable_param, 28 uint64_t loaded_bytes_param, 29 uint64_t total_bytes_param) 30 : event_type(event_type_param), 31 resource_url(resource_url_param), 32 length_is_computable(length_is_computable_param), 33 loaded_bytes(loaded_bytes_param), 34 total_bytes(total_bytes_param) { 35 } 36 37 PP_NaClEventType event_type; 38 std::string resource_url; 39 bool length_is_computable; 40 uint64_t loaded_bytes; 41 uint64_t total_bytes; 42 }; 43 44 // Dispatches a progress event to the DOM frame corresponding to the specified 45 // plugin instance. 46 // This posts a task to the main thread to perform the actual dispatch, since 47 // it's usually intended for progress events to be dispatched after all other 48 // state changes are handled. 49 void DispatchProgressEvent(PP_Instance instance, const ProgressEvent& event); 50 51 } // namespace nacl 52 53 #endif // COMPONENTS_NACL_RENDERER_NEXE_PROGRESS_EVENT_H_ 54