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);
}
}