1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch"""Manages intents and associated information.
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
7116680a4aac90f2aa7413d9095a592090648e557Ben MurdochThis is generally intended to be used with functions that calls Android's
8116680a4aac90f2aa7413d9095a592090648e557Ben MurdochAm command.
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch"""
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Intent(object):
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def __init__(self, action='android.intent.action.VIEW', activity=None,
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch               category=None, component=None, data=None, extras=None,
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch               flags=None, package=None):
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    """Creates an Intent.
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    Args:
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      action: A string containing the action.
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      activity: A string that, with |package|, can be used to specify the
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                component.
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      category: A string or list containing any categories.
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      component: A string that specifies the component to send the intent to.
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      data: A string containing a data URI.
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      extras: A dict containing extra parameters to be passed along with the
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              intent.
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      flags: A string containing flags to pass.
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      package: A string that, with activity, can be used to specify the
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch               component.
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    """
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    self._action = action
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    self._activity = activity
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    if isinstance(category, list) or category is None:
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      self._category = category
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    else:
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      self._category = [category]
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    self._component = component
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    self._data = data
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    self._extras = extras
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    self._flags = flags
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    self._package = package
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    if self._component and '/' in component:
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      self._package, self._activity = component.split('/', 1)
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    elif self._package and self._activity:
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      self._component = '%s/%s' % (package, activity)
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  @property
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def action(self):
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return self._action
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  @property
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def activity(self):
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return self._activity
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  @property
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def category(self):
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return self._category
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  @property
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def component(self):
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return self._component
63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  @property
65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def data(self):
66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return self._data
67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  @property
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def extras(self):
70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return self._extras
71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  @property
73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def flags(self):
74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return self._flags
75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  @property
77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  def package(self):
78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return self._package
79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
80