This source file includes following definitions.
- DispatchOnLaunchedEventImpl
- DispatchOnLaunchedEvent
- DispatchOnRestartedEvent
- DispatchOnLaunchedEventWithFileEntry
- DispatchOnLaunchedEventWithUrl
#include "apps/browser/api/app_runtime/app_runtime_api.h"
#include "apps/browser/file_handler_util.h"
#include "apps/common/api/app_runtime.h"
#include "base/time/time.h"
#include "base/values.h"
#include "extensions/browser/event_router.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/extensions_browser_client.h"
#include "extensions/common/extension.h"
#include "url/gurl.h"
using content::BrowserContext;
using extensions::Event;
using extensions::Extension;
using extensions::ExtensionPrefs;
using extensions::ExtensionSystem;
namespace apps {
namespace app_runtime = api::app_runtime;
namespace {
void DispatchOnLaunchedEventImpl(const std::string& extension_id,
scoped_ptr<base::DictionaryValue> launch_data,
BrowserContext* context) {
launch_data->SetBoolean(
"isKioskSession",
extensions::ExtensionsBrowserClient::Get()->IsRunningInForcedAppMode());
scoped_ptr<base::ListValue> args(new base::ListValue());
args->Append(launch_data.release());
ExtensionSystem* system = ExtensionSystem::Get(context);
scoped_ptr<Event> event(
new Event(app_runtime::OnLaunched::kEventName, args.Pass()));
event->restrict_to_browser_context = context;
event->can_load_ephemeral_apps = true;
system->event_router()->DispatchEventWithLazyListener(extension_id,
event.Pass());
ExtensionPrefs::Get(context)
->SetLastLaunchTime(extension_id, base::Time::Now());
}
}
void AppEventRouter::DispatchOnLaunchedEvent(BrowserContext* context,
const Extension* extension) {
scoped_ptr<base::DictionaryValue> launch_data(new base::DictionaryValue());
DispatchOnLaunchedEventImpl(extension->id(), launch_data.Pass(), context);
}
void AppEventRouter::DispatchOnRestartedEvent(BrowserContext* context,
const Extension* extension) {
scoped_ptr<base::ListValue> arguments(new base::ListValue());
scoped_ptr<Event> event(
new Event(app_runtime::OnRestarted::kEventName, arguments.Pass()));
event->restrict_to_browser_context = context;
event->can_load_ephemeral_apps = true;
extensions::ExtensionSystem::Get(context)
->event_router()
->DispatchEventToExtension(extension->id(), event.Pass());
}
void AppEventRouter::DispatchOnLaunchedEventWithFileEntry(
BrowserContext* context,
const Extension* extension,
const std::string& handler_id,
const std::string& mime_type,
const file_handler_util::GrantedFileEntry& file_entry) {
scoped_ptr<base::DictionaryValue> launch_data(new base::DictionaryValue);
launch_data->SetString("id", handler_id);
scoped_ptr<base::DictionaryValue> launch_item(new base::DictionaryValue);
launch_item->SetString("fileSystemId", file_entry.filesystem_id);
launch_item->SetString("baseName", file_entry.registered_name);
launch_item->SetString("mimeType", mime_type);
launch_item->SetString("entryId", file_entry.id);
scoped_ptr<base::ListValue> items(new base::ListValue);
items->Append(launch_item.release());
launch_data->Set("items", items.release());
DispatchOnLaunchedEventImpl(extension->id(), launch_data.Pass(), context);
}
void AppEventRouter::DispatchOnLaunchedEventWithUrl(
BrowserContext* context,
const Extension* extension,
const std::string& handler_id,
const GURL& url,
const GURL& referrer_url) {
api::app_runtime::LaunchData launch_data;
launch_data.id.reset(new std::string(handler_id));
launch_data.url.reset(new std::string(url.spec()));
launch_data.referrer_url.reset(new std::string(referrer_url.spec()));
DispatchOnLaunchedEventImpl(
extension->id(), launch_data.ToValue().Pass(), context);
}
}