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