diff options
Diffstat (limited to 'mobile/android/android-components/docs')
5 files changed, 170 insertions, 119 deletions
diff --git a/mobile/android/android-components/docs/_includes/header.html b/mobile/android/android-components/docs/_includes/header.html index 7a989f7de9..b32fc0298d 100644 --- a/mobile/android/android-components/docs/_includes/header.html +++ b/mobile/android/android-components/docs/_includes/header.html @@ -2,22 +2,24 @@ <div class="wrapper"> <a class="site-title" rel="author" href="/">Mozilla Android Components</a> - <nav class="site-nav"> - <input type="checkbox" id="nav-trigger" class="nav-trigger" /> - <label for="nav-trigger"> - <span class="menu-icon"> - <svg viewBox="0 0 18 15" width="18px" height="15px"> - <path d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z"/> - </svg> - </span> - </label> + <nav class="site-nav"> + <input type="checkbox" id="nav-trigger" class="nav-trigger" /> + <label for="nav-trigger"> + <span class="menu-icon"> + <svg viewBox="0 0 18 15" width="18px" height="15px"> + <path + d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z" + /> + </svg> + </span> + </label> - <div class="trigger"> - <a class="page-link" href="/components/">Components</a> - <a class="page-link" href="/changelog/">Changelog</a> - <a class="page-link" href="/blog/">Blog</a> - <a class="page-link" href="/contributing/">Contributing</a> - </div> - </nav> + <div class="trigger"> + <a class="page-link" href="/components/">Components</a> + <a class="page-link" href="/changelog/">Changelog</a> + <a class="page-link" href="/blog/">Blog</a> + <a class="page-link" href="/contributing/">Contributing</a> + </div> + </nav> </div> </header> diff --git a/mobile/android/android-components/docs/_includes/post_detail.html b/mobile/android/android-components/docs/_includes/post_detail.html index bceb37d5bc..2cb5a8a9cd 100644 --- a/mobile/android/android-components/docs/_includes/post_detail.html +++ b/mobile/android/android-components/docs/_includes/post_detail.html @@ -1,16 +1,16 @@ <h1 class="entry-title"> - <!--<a href="{{ root_url }}{{ page.url }}">{{ page.title }}</a>--> + <!--<a href="{{ root_url }}{{ page.url }}">{{ page.title }}</a>--> </h1> <ul> - {% if post.title %} - <li> - {{ post.date | date: '%B %d, %Y' }} - <br/> - {% if post.external_url %} - <a href="{{ post.external_url }}">{{ post.title | escape }}</a> - {% else %} - <a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a> - {% endif %} - </li> + {% if post.title %} + <li> + {{ post.date | date: '%B %d, %Y' }} + <br /> + {% if post.external_url %} + <a href="{{ post.external_url }}">{{ post.title | escape }}</a> + {% else %} + <a href="{{ post.url | relative_url }}">{{ post.title | escape }}</a> {% endif %} + </li> + {% endif %} </ul> diff --git a/mobile/android/android-components/docs/_layouts/post.html b/mobile/android/android-components/docs/_layouts/post.html index 29f841f336..cf3d23a3c5 100644 --- a/mobile/android/android-components/docs/_layouts/post.html +++ b/mobile/android/android-components/docs/_layouts/post.html @@ -1,38 +1,53 @@ --- layout: default --- -<article class="post h-entry" itemscope itemtype="http://schema.org/BlogPosting"> +<article + class="post h-entry" + itemscope + itemtype="http://schema.org/BlogPosting" +> <header class="post-header"> - <h1 class="post-title p-name" itemprop="name headline">{{ page.title | escape }}</h1> + <h1 class="post-title p-name" itemprop="name headline"> + {{ page.title | escape }} + </h1> <p class="post-meta"> - <time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished"> - {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%} - {{ page.date | date: date_format }} + <time + class="dt-published" + datetime="{{ page.date | date_to_xmlschema }}" + itemprop="datePublished" + > + {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" + -%} {{ page.date | date: date_format }} </time> - {%- if page.author -%} - - - {% assign author = site.data.authors[page.author] %} - <span itemprop="author" itemscope itemtype="http://schema.org/Person"> - <span class="p-author h-card" itemprop="name"> - <img src="{{ author.image }}" width="20" height="20" style="margin:5px;" /> - {{ author.name }} - {%- if author.twitter -%} - <a href="{{ author.twitter }}"><svg class="svg-icon" style="margin-left:10px;"><use xlink:href="{{ '/assets/minima-social-icons.svg#twitter' | relative_url }}"></use></svg></a> - {%- endif -%} - </span> - </span> + {%- if page.author -%} - {% assign author = site.data.authors[page.author] + %} + <span itemprop="author" itemscope itemtype="http://schema.org/Person"> + <span class="p-author h-card" itemprop="name"> + <img + src="{{ author.image }}" + width="20" + height="20" + style="margin: 5px" + /> + {{ author.name }} {%- if author.twitter -%} + <a href="{{ author.twitter }}" + ><svg class="svg-icon" style="margin-left: 10px"> + <use + xlink:href="{{ '/assets/minima-social-icons.svg#twitter' | relative_url }}" + ></use></svg + ></a> + {%- endif -%} + </span> + </span> {%- endif -%} </p> </header> - <div class="post-content e-content" itemprop="articleBody"> - {{ content }} - </div> + <div class="post-content e-content" itemprop="articleBody">{{ content }}</div> - {%- if site.disqus.shortname -%} - {%- include disqus_comments.html -%} - {%- endif -%} + {%- if site.disqus.shortname -%} {%- include disqus_comments.html -%} {%- + endif -%} <a class="u-url" href="{{ page.url | relative_url }}" hidden></a> </article> diff --git a/mobile/android/android-components/docs/assets/js/icon-js.js b/mobile/android/android-components/docs/assets/js/icon-js.js index 6c5ca1a226..41ace3daf7 100644 --- a/mobile/android/android-components/docs/assets/js/icon-js.js +++ b/mobile/android/android-components/docs/assets/js/icon-js.js @@ -3,11 +3,11 @@ * @return {Element} */ function htmlToElement(html) { - let template = document.createElement('template'); - html = html.trim(); // Never return a text node of whitespace as the result - template.innerHTML = html; - //firstChild may be a comment so we must use firstElementChild to avoid picking it - return template.content.firstElementChild; + let template = document.createElement("template"); + html = html.trim(); // Never return a text node of whitespace as the result + template.innerHTML = html; + //firstChild may be a comment so we must use firstElementChild to avoid picking it + return template.content.firstElementChild; } /** @@ -17,81 +17,90 @@ function htmlToElement(html) { * @returns {String} The same string but in the standard SVG representation */ function androidSVGtoNormalSVG(s) { - s = s.replace(/<\?xml version="1\.0" encoding="utf-8"\?>/g, ''); - s = s.replace(/<vector xmlns:android="http:\/\/schemas.android.com\/apk\/res\/android"/g, '<svg xmlns="http://www.w3.org/2000/svg"'); - s = s.replace(/<\/vector>/g, '</svg>'); - s = s.replace(/android:(height|width)="(\d+)dp"/g, ''); - s = s.replace(/android:viewportHeight="(\d+\.?\d+)"/g, 'height="$1"'); - s = s.replace(/android:viewportWidth="(\d+\.?\d+)"/g, 'width="$1"'); - s = s.replace(/android:fillColor=/g, 'fill='); - s = s.replace(/android:pathData=/g, 'd='); - //s = s.replace(/android:/g, ''); - return s; + s = s.replace(/<\?xml version="1\.0" encoding="utf-8"\?>/g, ""); + s = s.replace( + /<vector xmlns:android="http:\/\/schemas.android.com\/apk\/res\/android"/g, + '<svg xmlns="http://www.w3.org/2000/svg"' + ); + s = s.replace(/<\/vector>/g, "</svg>"); + s = s.replace(/android:(height|width)="(\d+)dp"/g, ""); + s = s.replace(/android:viewportHeight="(\d+\.?\d+)"/g, 'height="$1"'); + s = s.replace(/android:viewportWidth="(\d+\.?\d+)"/g, 'width="$1"'); + s = s.replace(/android:fillColor=/g, "fill="); + s = s.replace(/android:pathData=/g, "d="); + //s = s.replace(/android:/g, ''); + return s; } function addToTable(name, svg) { - let table = document.querySelector("#preview_table > tbody"); - let row = htmlToElement("<tr></tr>"); - row.appendChild(htmlToElement("<td>" + name + "</td>")); - let td = htmlToElement("<td></td>"); - td.appendChild(svg); - row.appendChild(td); - table.appendChild(row); + let table = document.querySelector("#preview_table > tbody"); + let row = htmlToElement("<tr></tr>"); + row.appendChild(htmlToElement("<td>" + name + "</td>")); + let td = htmlToElement("<td></td>"); + td.appendChild(svg); + row.appendChild(td); + table.appendChild(row); } function addSingleItemToTable(str) { - let table = document.querySelector("#preview_table > tbody"); - table.append(htmlToElement("<tr><td colspan='2'>" + str + "</td></tr>")) + let table = document.querySelector("#preview_table > tbody"); + table.append(htmlToElement("<tr><td colspan='2'>" + str + "</td></tr>")); } function getFile(iconName, downloadUrl) { - return new Promise((resolve, reject) => { - let request = new XMLHttpRequest(); - request.open('GET', downloadUrl, true); - request.onreadystatechange = function () { - if (request.readyState === 4 && request.status === 200) { - let androidXmlText = request.responseText; - androidXmlText = androidSVGtoNormalSVG(androidXmlText); - resolve([iconName, androidXmlText]); - } else if (request.readyState === 4) { - //Request completed with an error - resolve([iconName, "<span>Error during download</span>"]); - } - }; - request.send(null); - }); - + return new Promise((resolve, reject) => { + let request = new XMLHttpRequest(); + request.open("GET", downloadUrl, true); + request.onreadystatechange = function () { + if (request.readyState === 4 && request.status === 200) { + let androidXmlText = request.responseText; + androidXmlText = androidSVGtoNormalSVG(androidXmlText); + resolve([iconName, androidXmlText]); + } else if (request.readyState === 4) { + //Request completed with an error + resolve([iconName, "<span>Error during download</span>"]); + } + }; + request.send(null); + }); } // This function recovers all icons inside the drawable folder via github API (function getIcons() { - let request = new XMLHttpRequest(); - request.open("GET", "https://api.github.com/repos/mozilla-mobile/android-components/contents/components/ui/icons/src/main/res/drawable", true); - //Explicit request of the V3 version of the API - request.setRequestHeader("Accept", "application/vnd.github.v3+json"); - request.onreadystatechange = function () { - if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { - let response = JSON.parse(request.response); - if (response.message) { - //Something went wrong - addSingleItemToTable("Error: " + response.message); - return; - } - addSingleItemToTable("Loading"); - let promises = []; - for (let i = 0; i < response.length; i++) { - let iconName = response[i]['name'].substr(0, response[i]['name'].length - 4); - promises.push(getFile(iconName, response[i]['download_url'])); - } - Promise.all(promises).then((values) => { - document.querySelector("#preview_table > tbody").innerHTML = ""; - for (let i = 0; i < values.length; i++) { - let name = values[i][0], svg = values[i][1]; - addToTable(name, htmlToElement(svg)); - } - }); + let request = new XMLHttpRequest(); + request.open( + "GET", + "https://api.github.com/repos/mozilla-mobile/android-components/contents/components/ui/icons/src/main/res/drawable", + true + ); + //Explicit request of the V3 version of the API + request.setRequestHeader("Accept", "application/vnd.github.v3+json"); + request.onreadystatechange = function () { + if (request.readyState === XMLHttpRequest.DONE && request.status === 200) { + let response = JSON.parse(request.response); + if (response.message) { + //Something went wrong + addSingleItemToTable("Error: " + response.message); + return; + } + addSingleItemToTable("Loading"); + let promises = []; + for (let i = 0; i < response.length; i++) { + let iconName = response[i]["name"].substr( + 0, + response[i]["name"].length - 4 + ); + promises.push(getFile(iconName, response[i]["download_url"])); + } + Promise.all(promises).then(values => { + document.querySelector("#preview_table > tbody").innerHTML = ""; + for (let i = 0; i < values.length; i++) { + let name = values[i][0], + svg = values[i][1]; + addToTable(name, htmlToElement(svg)); } - }; - request.send(null); + }); + } + }; + request.send(null); })(); - diff --git a/mobile/android/android-components/docs/changelog.md b/mobile/android/android-components/docs/changelog.md index 6dce7f4966..d14bbca8c8 100644 --- a/mobile/android/android-components/docs/changelog.md +++ b/mobile/android/android-components/docs/changelog.md @@ -4,7 +4,32 @@ title: Changelog permalink: /changelog/ --- -# 126.0 (In Development) +# 127.0 (In Development) + +* **feature-prompts** **browser-storage-sync** + * A new `isLoginAutofillEnabled` callback is available in `PromptFeature` and `GeckoLoginStorageDelegate` to allow clients controlling whether saved logins should be autofilled or not. Default is false + +* **browser-state** + * Added `TabSessionState.getUrl()` extension function that will return the URL that could be + used for various features such as bookmarks or share regardless of the mode the browser is in (e.g. Reader mode). [Bug 1885628](https://bugzilla.mozilla.org/show_bug.cgi?id=1885628). + +* **support-base** + * Added `StartForegroundService` to safely start a foreground service, see [Bug 1839039](https://bugzilla.mozilla.org/show_bug.cgi?id=1839039) for crash reference. + * Added `ProcessInfoProvider` and `BuildVersionProvider` to get information about the app process and the build version. + +* **browser-engine-gecko** + * For screenshot capture, include exception in failure result rather than throwing. + +* **feature-accounts-push** + * 🆕 New `CloseTabsFeature` for closing tabs on this device from other devices that are signed to the same Mozilla account. + * 🆕 New `CloseTabsUseCase` for closing tabs on other devices from this device. + +* **concept-sync** + * 🆕 New `DeviceCapability.CLOSE_TABS` variant to indicate that a device supports closing synced tabs. + * 🆕 New `DeviceCommandIncoming.TabsClosed` variant to represent a "close synced tabs" command received from another device. + * 🆕 New `DeviceCommandOutgoing.CloseTab` variant to represent a "close synced tabs" sent to another device. + +# 126.0 * **browser-menu** * Added enabled state to `BrowserMenuImageText`, see [Bug 1884769](https://bugzilla.mozilla.org/show_bug.cgi?id=1884769). |