Gaia/System/Activities: Difference between revisions

m
(Populate with outline)
 
(47 intermediate revisions by 7 users not shown)
Line 1: Line 1:
==Status==
== Design Specs==  
* Stage: Development
For the latest UX specifications, please visit
* Latest:
https://mozilla.box.com/system
* Release target:
 
 
== Team ==
* UX: Patryk
* UX: Josh
* Dev: Vivien
* Dev: Etienne
* B2G: Fabrice
* API: Mounir
 
 


== Background ==
== Background ==
Line 19: Line 7:
Activities facilitate app to app communications. They have the following characteristics:
Activities facilitate app to app communications. They have the following characteristics:


=== Are exclusively user-initiated. ===


==== Are exclusively user-initiated. ====
 


==== Comprised of four components ====
=== Comprised of four components ===


Action + Type + [data] + Disposition
Action + Type + [data] + Disposition
Line 42: Line 30:
* Disposition
* Disposition


=== Can be one-way, or round trip ===


==== Can be one-way, or round trip ====
==== One way ====


'''One way'''
* 1. Browser: "Share"
* 1. Browser: "Share"
* 2. Select handler app from list of apps that support that Activity (Share), type (URL), and [Data] (string)
* 2. Select handler app from list of apps that support that Activity (Share), type (URL), and [Data] (string)
Line 53: Line 41:
In a one-way trip, the message composition window would then close, and take user to main window of Email app. The user would not be returned to the originating app (Browser).
In a one-way trip, the message composition window would then close, and take user to main window of Email app. The user would not be returned to the originating app (Browser).


'''Round trip'''
==== Round trip ====
 
* 1. Email: "Attach"
* 1. Email: "Attach"
* 2. Select attachment type from list (eg: Image, Document, Video, etc)   
* 2. Select attachment type from list (eg: Image, Document, Video, etc)   
Line 63: Line 52:
In this instance, the Activity returns the user to the originating app, along with an object.
In this instance, the Activity returns the user to the originating app, along with an object.


=== Are tracked by OS ===
The system maintains a record ''(via a central registry in Activities API?)'' of which apps support which Actions & Types, and uses this record to populate the list of available handler apps when the user selects an Action.
== App Interaction Matrix ==


==== Are tracked by OS ====
Details of each of the currently implemented activities are here: https://etherpad.mozilla.org/gaia-activities-audit


The system maintains a record ''(via a central registry in Activities API?)'' of which apps support which Actions & Types, and uses this record to present to populate the list of available handler apps when the user selects an Action.
<div style="overflow-x:scroll">
{| border="1" cellpadding="5" style="font-size:smaller;"
|-
!&nbsp;!! colspan="15" |Handler App
|-
!Initiating App!!Bluetooth!!Browser!!Calendar!!Camera!!Contacts!!Dialer!!Email!!Gallery!!Homescreen!!Music!!PDFjs!!Settings!!SMS!!Video!!Wallpaper
|-
!Bluetooth
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Browser
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| Add to Home <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Calendar
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Camera
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| Browse, Open <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Contacts
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| Dial <!-- Dialer -->
| New <!-- Email -->
| Pick <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| New <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Dialer
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| New <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Email
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| Pick, New <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Gallery
| Share <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| Record <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| Share <!-- Wallpaper -->
|-
!Homescreen
| &nbsp; <!-- Bluetooth -->
| open{{sup|2}} <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Music
| Share <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!PDFJS
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Settings
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!SMS
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| Pick, New <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Video
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| &nbsp; <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|-
!Wallpaper
| &nbsp; <!-- Bluetooth -->
| &nbsp; <!-- Browser -->
| &nbsp; <!-- Calendar -->
| &nbsp; <!-- Camera -->
| &nbsp; <!-- Contacts -->
| &nbsp; <!-- Dialer -->
| &nbsp; <!-- Email -->
| Pick-wallpaper <!-- Gallery -->
| &nbsp; <!-- Homescreen -->
| &nbsp; <!-- Music -->
| &nbsp; <!-- PDFjs -->
| &nbsp; <!-- Settings -->
| &nbsp; <!-- SMS -->
| &nbsp; <!-- Video -->
| &nbsp; <!-- Wallpaper -->
|}
</div>


# The browser currently handles any activity where activity.source.data.type is 'url' by opening a new tab, but I don't think this activity is initiated by the homescreen itself but at a lower level.


== Requirements ==
== Requirements ==


''Please fill in the following for each app''
=== Browser ===
==== Share Function ====
* 1. Select from list of compatible applications that the link can be shared to:
** Email, Compose message
*** subject line: "[name] shared a link with you"
*** body text: [link name][link url]
** Messaging/SMS
*** Open to New Message screen
*** Open keyboard
*** Add link url to a new blank message
*** Place cursor one space after url
* 2. User sends message or completes sharing operation
* 3. Share operation is completed in background and user is returned to browser
 
==== In browser content mailto: link ====
* 1. User taps email link
* 2. Email, Compose message
** to: [mailto: email address]
* 3. User sends email
* 4. Email send operation is completed in background while user is returned to browser.
 
==== In browser content link pattern ====
* 1. Pattern match website addresses  (ie: www.domain.com)
* 2. User taps link
* 3. Link opens
 
==== In browser content phone number pattern ====
* 1. Pattern matches phone numbers (eg XXX-XXX-XXXX formatted)
* 2. User taps phone number
* 3. Dialer application is opened with phone # added to number field.
 
==== Open .PDF url ====
# User taps a .PDF url (ie: www.domain.com/menu.pdf)
# Open headless PDF.js app
# Pass through url.
# PDF.js loads the content, user interacts with it.
# User taps "Close" button, activity closes, user is returned to origin app
 
 
=== Camera ===
==== Image/Video capture ====
* 1. After Image/Photo is captured, it is automatically inserted into Gallery application.
** Thumbnail of last capture is added to 'filmstrip' of thumbnail images for quick viewing.
* 2. After Video is captured, it is automatically inserted in Video application
** Thumbnail of last video capture is added to 'filmstrip' of thumbnail images for quick viewing.
 
==== Captured image view ====
* 1. User taps on image thumbnail to reveal full sized image from gallery.
 
=== Calendar ===
Calender events with email participants:
 
==== Add Calender Event ====
* 1. User adds new calender event and email participants
* 2. Email event invite request is sent for each email participant in background
 
==== Update, Delete Calender Event ====
* 1. User updates calender event
* 2. Event update is sent for each email participant in background.
 
=== Contacts ===
==== Contact website entry ====
* 1. User taps on website address
* 2. Web browser opens and navigates to address
 
==== Contact phone number entry ====
* 1. User taps phone number
* 2. Dialer opens and immediately dials phone number
 
==== Contact email address entry ====
* 1. User taps email address
* 2. Email app opens to Compose Message view
** "To" field is populated with email address
** Keyboard opens
** Subject field is selected
* 3. User sends email
* 4. Email "Send" operation is completed in background, and user is returned to Contact entry.
 
==== Send SMS/MMS/Message contact ====
* 1. User taps on Send message
* 2. New SMS/MMS/Message
** To: contact phone #
* 3. User sends message
* 4. Send message operation is completed in background, user is returned to Contact entry.
 
=== Send Contact Entry ===
* 1. User Shares contact entry
* 2. Email, Compose Message Opens
** Attachment: contact vcf file
* 3. User sends email
* 4. Email send operation is completed in background, user is returned to Contact entry.
 
=== Dialer ===
==== Add phone number to contact ====
* 1. User taps Add Contact button
* 2. Contacts app opens, to Add Contact view
* 3. User enters contact details
* 4. User cancels or saves contact, activity closes, user is returned to Dialer.
 
=== Email ===
==== Add Email recipient from Contacts ====
* 1. User selects to, cc, bcc recipient field
* 2. Live search or add email address from contacts application
 
==== Read Email Contact ====
* 1. Match any emails in Contacts application
* 2. User taps on contact
* 3. Open entry in Contacts.
 
==== Read Email Content ====
* Should exhibit same behavior as Browser Content
 
==== Open .PDF ====
# User taps a .PDF attachment (ie: www.domain.com/menu.pdf)
# Open headless PDF.js app
# Pass through PDF attachment.
# PDF.js loads the PDF, user interacts with it.
# User taps "Close" button, activity closes, user is returned to origin app
 
 
=== Gallery ===
==== Share item ====
* 1. User selects gallery item to share
* 2. Select from list of compatible applications that the item can be shared to:
** Email, Compose message
*** subject line: "[name] Is sharing a [item type] with you"
*** attachment: [gallery item]
** Messaging/MMS
*** Include [gallery item]
* 2. User sends message or completes sharing operation
* 3. Share operation is completed in background and user is returned to browser
 
=== Music ===
=== SMS/MMS ===
* Add recipient same as Email
* Message content same as Browser content
 
==== Take photo for MMS message ====
* 1. User selects Take Photo for new message
* 2. Camera application opens
* 3. User takes photo
* 4. Camera Modal dialogue
Use this photo
Retake | Continue
* 5. User is returned to new message with photo inserted into message contents.


==== Browser ====
==== Save Picture from MMS message ====
==== Camera ====
* 1. User Press and hold message image and selects 'Save Image
==== Calendar ====
* 2. Image is saved to Gallery in background
==== Contacts ====
* 3. User continues in Conversation view.
==== Dialer ====
==== Email ====
==== Gallery ====
==== Music ====
==== SMS/MMS ====
==== Video ====


==== Open .PDF url (may be for v2) ====
# User taps a .PDF url (ie: www.domain.com/menu.pdf)
# Open headless PDF.js app
# Pass through url.
# PDF.js loads the content, user interacts with it.
# User taps "Close" button, activity closes, user is returned to origin app


==Design Spec==
=== Video ===
Interaction Design Spec (Draft): https://www.dropbox.com/s/ohrypdms37tfa69/Activities.pdf
=== Settings ===
* Background / Lock screen image picker -- opens photo gallery
Confirmed users
208

edits