2009/dap/contacts Overview.html,1.45,1.46

Update of /sources/public/2009/dap/contacts
In directory hutz:/tmp/cvs-serv26326

Modified Files:
	Overview.html 
Log Message:
- Initial changes to Contacts.find() and ContactOptions according to mailing list discussion: http://lists.w3.org/Archives/Public/public-device-apis/2010Feb/0109.html (full thread)
- ContactOptions renamed to ContactFindOptions

Index: Overview.html
===================================================================
RCS file: /sources/public/2009/dap/contacts/Overview.html,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- Overview.html	18 Feb 2010 18:28:58 -0000	1.45
+++ Overview.html	24 Feb 2010 11:36:43 -0000	1.46
@@ -18,6 +18,7 @@
         </script>
         <script src='../common/config.js' class='remove'>
         </script>
+		<link rel="stylesheet" href="../ReSpec.js/css/respec.css" type="text/css" media="screen" />
     </head>
     <body>
         <section id='abstract'>
@@ -71,9 +72,12 @@
 }
 
 // Perform an address book search
-navigator.service.contacts.find( {name: 'Bob'},
+navigator.service.contacts.find( ['name', 'emails'],
                                 successContactFindCallback, 
-                                generalErrorCB );</pre>
+                                generalErrorCB,
+                                {filter:
+                                    {'name': 'Bob'}
+                                } );</pre>
                 </div>
                 <div>
                     <p>
@@ -135,16 +139,6 @@
 			
 			<p class='note'>
 				<strong>This section is under development.</strong>
-				
-				<br /><br />This section has been inspired (verbatim where necessary) from the <a href='http://www.w3.org/2008/geolocation/'>Geolocation WG</a> <a href='http://www.w3.org/TR/2009/WD-geolocation-API-20090707/'>latest public working draft specification</a>. 
-				
-				<br /><br />There are a number of reasons for this approach:
-				
-				<br /><br />1. The programmatic styles of the Contacts API and Geolocation API are very similar and because they both have the the same implied user experience within
-				the same implied User Agent the general security and privacy considerations of both APIs should remain common.
-				
-				<br /><br />2. The ability to align the security and privacy considerations of the Geolocation API with DAP APIs is important for the potential future benefit 
-				of making any security and privacy mechanisms developed within the DAP WG applicable to the Geolocation API at some point in its own ongoing development.
 			</p>
 			
 			<p>
@@ -312,10 +306,15 @@
 						
                         <dl class='parameters'>
                             <dt>
-                                ContactProperties filter
+                              	DOMString[] fields
                             </dt>
                             <dd>
-                                The filter used in order to select which contacts are returned.
+                                A DOMString-based list of <a href='#contactproperties-interface'><code>ContactProperties</code></a> fields that are
+								requested to be returned as part of the associated <a href='#contactfindsuccesscb-interface'><code>ContactFindSuccessCB</code></a>.
+								
+								<p>
+									This method returns no ContactProperties by default. Therefore the requested <a href='#contact-interface'><code>Contact</code></a> fields MUST be specified as part of this operation. 
+								</p>
                             </dd>
                             <dt>
                                 ContactFindSuccessCB successCB
@@ -330,7 +329,7 @@
                                 Function to call when the asynchronous operation fails. 
                             </dd>
                             <dt>
-                                optional ContactOptions options
+                                optional ContactFindOptions options
                             </dt>
                             <dd>
                                 The options to apply to the output of this method. 
@@ -617,9 +616,6 @@
 
             <section>
                 <h2><a>Address</a> interface</h2>
-				<p class='note'>
-                  	Aligned with <a href='http://dev.w3.org/geo/api/spec-source-v2.html#address_interface'>Geolocation v2 specification</a>.
-                </p>
                 <p>
                     The Address interface supports address information for use in the <a href='#contactaddress-interface'><code>ContactAddress</code></a> interface. 
                 </p>
@@ -682,16 +678,24 @@
             </section>	
 					
             <section>
-                <h2><a>ContactOptions</a> interface</h2>
-				<p class='note'>
-					Rename this to "ContactSearchFilter" or similar?
-				</p>
-				
+                <h2><a>ContactFindOptions</a> interface</h2>
                 <p>
-                    The <a href='#contactoptions-interface'><code>ContactOptions</code></a>
+                    The <a href='#contactfindoptions-interface'><code>ContactFindOptions</code></a>
                     interface describes the options that can be applied to contact searching.
                 </p>
-                <dl title='[NoInterfaceObject] interface ContactOptions' class='idl'>
+                <dl title='[NoInterfaceObject] interface ContactFindOptions' class='idl'>
+                	<dt>
+                		attribute ContactProperties? filter
+                	</dt>
+					<dd>
+						An optional set of <a href='#contactproperties-interface'><code>ContactProperties</code></a> to initially filter in the <a>contacts picker</a>.
+					</dd>
+                	<dt>
+                		attribute boolean? multiple
+                	</dt>
+					<dd>
+						A boolean value to indicate whether multiple Contact objects are returnable as part of the associated <a href='#widl-Contacts-find'><code>Contacts.find()</code></a> method. 
+					</dd>					
                     <dt>
                         attribute unsigned short limit
                     </dt>
@@ -700,72 +704,12 @@
                             The maximum number of results to return from the contacts search.
                         </p>
 						<p>
-							If no value is provided, the search will return all search results.
-						</p>
-                    </dd>
-                    <dt>
-                        attribute unsigned short page
-                    </dt>
-                    <dd>
-                        <p>
-                            The page number of the contacts search to return. If the requested page index does not exist, this parameter MUST be assigned the default value.
-                        </p>						
-						<p>
-							If no value is provided, the search will return all search results.
-						</p>
-                    </dd>
-                    <dt>
-                        attribute DOMString? sort
-                    </dt>
-                    <dd>
-                    	<p class='note'>
-                    		The ECMA-262 specification says in, section 12.6.4, &quot;[for the for-in Statement t]he mechanics and order of enumerating the 
-							properties [...] is not specified.&quot;
-							<br /><br />
-							However, all major browsers loop over the properties of an object in the order in which they were defined (ref: 
-							<a href="http://ejohn.org/blog/javascript-in-chrome/"><cite>JavaScript in Chrome</cite> blog post</a> 
-							but independently verified). Chrome has some minor issues, but due to the overwhelming implementation of this behaviour in all other major browsers, 
-							the Chrome development team have marked this as a bug and it is due for fix in an upcoming release 
-							<a href="http://code.google.com/p/chromium/issues/detail?id=20144">[2]</a>.
-                    	</p>
-                    	<p class='note'>
-                    		Would it be better to have sort: ['field1', 'field2'] and descending: true|false where the latter is only meaningful if sort was specified?
-                    	</p>
-                        <p>
-                        	The direction in which to sort the first property in the related <a href='#contactproperties-interface'><code>ContactProperties</code></a> object (in the order in which those properties were defined).
+							This parameter only applies in the case that the associated multiple attribute is equal to <code>true</code>.
 						</p>
 						<p>
-							 Only the first <a href='#contactproperties-interface'><code>ContactProperties</code></a> property provided is sortable.
-                        </p>						
-						<p>
-							This attribute MUST be one of the following constants:
-						</p>						
-						<pre>'asc', 'desc'</pre>
-						<p>If a different value is provided, this field defaults to <code>null</code></p>
-                    </dd>
-                    <dt>
-                        attribute boolean? group
-                    </dt>
-                    <dd>
-                    	<p class='note'>
-                    		The ECMA-262 specification says in, section 12.6.4, &quot;[for the for-in Statement t]he mechanics and order of enumerating the 
-							properties [...] is not specified.&quot;
-							<br /><br />
-							However, all major browsers loop over the properties of an object in the order in which they were defined (ref: 
-							<a href="http://ejohn.org/blog/javascript-in-chrome/"><cite>JavaScript in Chrome</cite> blog post</a>
-							but independently verified). Chrome has some minor issues, but due to the overwhelming implementation of this behaviour in all other major browsers, 
-							the Chrome development team have marked this as a bug and it is due for fix in an upcoming release 
-							<a href="http://code.google.com/p/chromium/issues/detail?id=20144">[2]</a>.
-                    	</p>
-                        <p>
-                        	Whether the first property in the related <a href='#contactproperties-interface'><code>ContactProperties</code></a> object (in the order in which those properties were defined) should be grouped.
+							If no value is provided, the search will return all <a href='#contact-interface'><code>Contact</code></a> object results.
 						</p>
-						<p>
-							Only the first <a href='#contactproperties-interface'><code>ContactProperties</code></a> property provided can be grouped.
-                        </p>
-
-                    </dd>					
-					
+                    </dd>		
                 </dl>
             </section>
 			 
@@ -871,8 +815,6 @@
 
 			This section defines the general API interfaces required by this specification that MAY also be in use in other DAP APIs.
 			
-			<p class='note'>The following interfaces may be general interfaces for use throughout all APIs. They are included here for now for API spec completion.</p>
-
 			<section>
                 <h2><a>GenericError</a> interface</h2>
                 <p>
@@ -929,14 +871,26 @@
 					Fields provided with a <code>null</code> value are considered to match anything.
 				</p>
 				<p>
-					For example, the following <a href="#contactproperties-interface"><code>ContactProperties</code></a> object is supplied for Contact searching: 
-					<pre class="example sh_javascript">navigator.service.contacts.find({
-                            name:'Robert', 
-                            nicknames:['Bob']
-                        }, 
-                        /*...*/);</pre>
+					For example, the following Contact search is initiated: 
+					<pre class="example sh_javascript">// Perform an address book search
+navigator.service.contacts.find( 
+                                 ['name', 'addresses', 'phones', 'emails'],
+                                 successContactFindCallback, 
+                                 generalErrorCB,
+                                 {
+                                   'filter':
+                                     {
+                                        'name': 'Robert',
+                                        'nicknames': 'Bob'
+                                     },
+                                   'multiple': true,
+                                   'limit': 3
+                                 }
+                                );</pre>
 					
-					The above example logically implies: <em>&quot;find contact objects that contain a name of 'Robert' AND a nickname of 'Bob'&quot;</em>.
+					The above example logically implies: <pre>1. Initally filter the contacts picker to Contact objects that contain a name of 'Robert' AND a nickname of 'Bob'.
+					
+2. Return the 'name', 'addresses', 'phones' and 'emails' attributes of the resulting Contact objects.</pre>
 				</p>
 
 				<p class='note'>

Received on Wednesday, 24 February 2010 11:36:47 UTC