10de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 20de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 30de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// found in the LICENSE file. 40de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 50de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)#ifndef COMPONENTS_NACL_RENDERER_NEXE_PROGRESS_EVENT_H_ 60de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)#define COMPONENTS_NACL_RENDERER_NEXE_PROGRESS_EVENT_H_ 70de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 80de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)#include <string> 90de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 100de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)#include "ppapi/c/pp_instance.h" 110de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)#include "ppapi/c/private/ppb_nacl_private.h" 120de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 130de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)namespace nacl { 140de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 150de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// See http://www.w3.org/TR/progress-events/ for more details on progress 160de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// events. 170de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)struct ProgressEvent { 180de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) explicit ProgressEvent(PP_NaClEventType event_type_param) 190de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) : event_type(event_type_param), 200de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) length_is_computable(false), 210de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) loaded_bytes(0), 220de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) total_bytes(0) { 230de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) } 240de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 250de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) ProgressEvent(PP_NaClEventType event_type_param, 260de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) const std::string& resource_url_param, 270de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) bool length_is_computable_param, 280de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) uint64_t loaded_bytes_param, 290de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) uint64_t total_bytes_param) 300de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) : event_type(event_type_param), 310de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) resource_url(resource_url_param), 320de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) length_is_computable(length_is_computable_param), 330de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) loaded_bytes(loaded_bytes_param), 340de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) total_bytes(total_bytes_param) { 350de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) } 360de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 370de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) PP_NaClEventType event_type; 380de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) std::string resource_url; 390de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) bool length_is_computable; 400de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) uint64_t loaded_bytes; 410de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) uint64_t total_bytes; 420de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)}; 430de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 440de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// Dispatches a progress event to the DOM frame corresponding to the specified 450de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// plugin instance. 460de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// This posts a task to the main thread to perform the actual dispatch, since 470de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// it's usually intended for progress events to be dispatched after all other 480de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// state changes are handled. 490de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)void DispatchProgressEvent(PP_Instance instance, const ProgressEvent& event); 500de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 510de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)} // namespace nacl 520de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 530de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)#endif // COMPONENTS_NACL_RENDERER_NEXE_PROGRESS_EVENT_H_ 54