Gaia/System/Activities

From MozillaWiki
< Gaia‎ | System
Jump to: navigation, search

Design Specs

For the latest UX specifications, please visit https://mozilla.box.com/system

Background

Activities facilitate app to app communications. They have the following characteristics:

Are exclusively user-initiated.

Comprised of four components

Action + Type + [data] + Disposition

  • Action
    • Pick
    • View
    • Edit
    • Share
    • etc...
  • Type
    • image/png
    • etc...
  • Data
    • URL
    • Object
    • etc...
  • Disposition

Can be one-way, or round trip

One way

  • 1. Browser: "Share"
  • 2. Select handler app from list of apps that support that Activity (Share), type (URL), and [Data] (string)
  • 3. Selected app opens (eg: Email) and presents appropriate interface (eg: Email new message composition)
  • 4. User completes composition and sends.

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

  • 1. Email: "Attach"
  • 2. Select attachment type from list (eg: Image, Document, Video, etc)
  • 3. Select handler app from list of apps that support the Activity (Pick), type (Image), and [Data] (image object)
  • 4. Selected app opens (eg: Gallery) and presents appropriate interface (eg: Image picker)
  • 5. User completes activity (eg: selects one or more images, and selects "Ok")
  • 6. User is returned to Email. Selected images are input into email message.

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

Details of each of the currently implemented activities are here: https://etherpad.mozilla.org/gaia-activities-audit

  Handler App
Initiating App Bluetooth Browser Calendar Camera Contacts Dialer Email Gallery Homescreen Music PDFjs Settings SMS Video Wallpaper
Bluetooth                              
Browser                 Add to Home            
Calendar                              
Camera               Browse, Open              
Contacts           Dial New Pick         New    
Dialer         New                    
Email         Pick, New                    
Gallery Share     Record                     Share
Homescreen   open2                          
Music Share                            
PDFJS                              
Settings                              
SMS         Pick, New                    
Video                              
Wallpaper               Pick-wallpaper              
  1. 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

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

  1. User taps a .PDF url (ie: www.domain.com/menu.pdf)
  2. Open headless PDF.js app
  3. Pass through url.
  4. PDF.js loads the content, user interacts with it.
  5. 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

  1. User taps a .PDF attachment (ie: www.domain.com/menu.pdf)
  2. Open headless PDF.js app
  3. Pass through PDF attachment.
  4. PDF.js loads the PDF, user interacts with it.
  5. 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.

Save Picture from MMS message

  • 1. User Press and hold message image and selects 'Save Image
  • 2. Image is saved to Gallery in background
  • 3. User continues in Conversation view.

Open .PDF url (may be for v2)

  1. User taps a .PDF url (ie: www.domain.com/menu.pdf)
  2. Open headless PDF.js app
  3. Pass through url.
  4. PDF.js loads the content, user interacts with it.
  5. User taps "Close" button, activity closes, user is returned to origin app

Video

Settings

  • Background / Lock screen image picker -- opens photo gallery