27 static std::string
name() {
28 return "StoredContent";
35 Storage::Client::~Client() {}
44 Impl(
JsManager* engine,
const Global<JsObject>* player) : player_(player) {
45 CHECK(engine) <<
"Must pass a JsManager instance";
54 LocalVar<JsValue> ctor =
56 {
"shaka",
"offline",
"Storage"});
58 LOG(ERROR) <<
"Cannot get 'shaka.offline.Storage' object; is " 59 "shaka-player.compiled.js corrupted?";
60 return Error(
"The constructor 'shaka.offline.Storage' is not found.");
62 LocalVar<JsFunction> ctor_func = UnsafeJsCast<JsFunction>(ctor);
64 LocalVar<JsValue> result_or_except;
65 std::vector<LocalVar<JsValue>> args;
67 LocalVar<JsObject> player(*player_);
72 return ConvertError(result_or_except);
75 Init(UnsafeJsCast<JsObject>(result_or_except));
78 std::function<void(StoredContent, double)> cb =
79 std::bind(&Client::OnProgress, client, std::placeholders::_1,
80 std::placeholders::_2);
81 LocalVar<JsValue> args[] = {
82 ToJsValue(std::string{
"offline.progressCallback"}),
85 LocalVar<JsValue> ignored;
87 CallMemberFunction(object_,
"configure", 2, args, &ignored);
88 if (holds_alternative<Error>(except))
102 const Global<JsObject>* player_;
106 : impl_(new
Impl(engine, reinterpret_cast<const Global<JsObject>*>(
107 player ? player->GetRawJsValue() : nullptr))) {
116 return Impl::CallGlobalMethod<bool>(
117 {
"shaka",
"offline",
"Storage",
"support"});
122 return Impl::CallGlobalMethod<void>(
123 {
"shaka",
"offline",
"Storage",
"deleteAll"});
127 return impl_->Initialize(client);
131 return impl_->CallMethod<
void>(
"destroy");
135 return impl_->CallMethod<
bool>(
"getStoreInProgress");
140 return impl_->CallMethod<
bool>(
"configure", name_path,
Any());
145 return impl_->CallMethod<
bool>(
"configure", name_path, value);
150 return impl_->CallMethod<
bool>(
"configure", name_path, value);
154 const std::string& value) {
155 return impl_->CallMethod<
bool>(
"configure", name_path, value);
159 return impl_->CallMethod<std::vector<StoredContent>>(
"list");
163 return impl_->CallMethod<
void>(
"remove", content_uri);
167 return impl_->CallMethod<
bool>(
"removeEmeSessions");
175 const std::string& uri,
176 const std::unordered_map<std::string, std::string>& app_metadata) {
177 return impl_->CallMethod<
StoredContent>(
"store", uri, app_metadata);
static AsyncResults< bool > Support(JsManager *engine)
ReturnVal< JsFunction > CreateStaticFunction(const std::string &target, const std::string &name, Func &&callback)
ReturnVal< JsValue > GetDescendant(Handle< JsObject > root, const std::vector< std::string > &names)
virtual void OnProgress(StoredContent content, double progress)
AsyncResults< void > Remove(const std::string &content_uri)
ReturnVal< JsValue > ToJsValue(T &&source)
AsyncResults< bool > RemoveEmeSessions()
Storage & operator=(Storage &&)
static AsyncResults< void > DeleteAll(JsManager *engine)
ReturnVal< JsValue > RawToJsValue(Handle< T > source)
AsyncResults< void > Destroy()
Converter< void >::future_type Initialize(Client *client)
AsyncResults< void > Initialize(Client *client=nullptr)
Storage(JsManager *engine, Player *player=nullptr)
proto::ValueType GetValueType(Handle< JsValue > value)
static JsManagerImpl * Instance()
std::shared_ptr< ThreadEvent< impl::RetOf< Func > > > AddInternalTask(TaskPriority priority, const std::string &name, Func &&callback)
AsyncResults< bool > GetStoreInProgress()
AsyncResults< StoredContent > Store(const std::string &uri)
Impl(JsManager *engine, const Global< JsObject > *player)
static std::string name()
bool InvokeConstructor(Handle< JsFunction > ctor, int argc, LocalVar< JsValue > *argv, LocalVar< JsValue > *result_or_except)
AsyncResults< std::vector< StoredContent > > List()
AsyncResults< bool > Configure(const std::string &name_path, DefaultValueType)
TaskRunner * MainThread()