• Steve Howard's avatar
    New URI structure with "my_downloads" and "all_downloads" · 3d55d829
    Steve Howard authored
    This change introduces a second view into the download manager
    database via a set of URIs starting with /all_downloads, renaming the
    original /download URIs to /my_downloads.  In addition to making
    things more clear, this change allows the downloads UI to grant
    permissions on individual downloads to viewer apps.
    
    The old semantics were:
    
    * for ordinary callers, /download included only downloads initiated by
      the calling UID
    * for intraprocess calls or calls by root, /download included all
      downloads
    
    The new semantics are
    
    * /my_downloads always includes only downloads initiated by the
      calling UID, and requires only INTERNET permission.  It could just
      as well require no permission, but that's not possible in the
      framework, since path-permissions can only broaden access, not
      tighten it.  It doesn't matter, because these URIs are useless
      without INTERNET permission -- if a user can't initiate downloads,
      there's no reason to read this.
    * /all_downloads always includes all downloads on the system, and
      requires the new permission ACCESS_ALL_DOWNLOADS.  This permission
      is currently protectionLevel=signature -- this could be relaxed
      later to support third-party download managers.
    
    All download manager code has been changed to use /all_downloads URIs,
    except when passing a URI to another app.  In making this change
    across the download manager code, I've taken some liberties in
    cleaning things up.  Other apps are unchanged and will use
    /my_downloads.
    
    Finally, this incorporates changes to DownloadManager to return a
    content URI for /cache downloads -- the download UI no longer assumes
    it's a file URI, and it grants permissions to the receiver of the VIEW
    intent.  The public API test has also been updated.
    
    I've also fixed some null cursor checking in DownloadManager.
    
    Change-Id: I05a501eb4388249fe80c43724405657c950d7238
    3d55d829
AndroidManifest.xml 4.31 KB