DE112019001184T5 - Systeme und Verfahren zur Autofill-Feldklassifizierung - Google Patents

Systeme und Verfahren zur Autofill-Feldklassifizierung Download PDF

Info

Publication number
DE112019001184T5
DE112019001184T5 DE112019001184.7T DE112019001184T DE112019001184T5 DE 112019001184 T5 DE112019001184 T5 DE 112019001184T5 DE 112019001184 T DE112019001184 T DE 112019001184T DE 112019001184 T5 DE112019001184 T5 DE 112019001184T5
Authority
DE
Germany
Prior art keywords
user
suggested
values
field
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112019001184.7T
Other languages
English (en)
Inventor
Felipe Leme
Jason Long
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE112019001184T5 publication Critical patent/DE112019001184T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/174Form filling; Merging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Ein beispielhaftes Verfahren beinhaltet das Ermitteln einer Teilmenge von Inhalten unter Ausschluss von benutzerspezifischen Informationen, die durch eine Anwendung auf einer Benutzeroberfläche (UI) eines Benutzergeräts angezeigt werden. Das Verfahren beinhaltet ferner das Übermitteln einer Anfrage an einen externen Anbieter, bei der es sich um eine Autofill-Anfrage für die Anwendung handelt. Das Verfahren beinhaltet außerdem das Empfangen eines oder mehrerer vorgeschlagener Benutzerwerte und einer Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird. Das Verfahren beinhaltet ferner das Erkennen eines Benutzereingabewertes in dem Texteingabefeld, und das Ermitteln einer Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten. Das Verfahren beinhaltet außerdem ein Übermitteln einer Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter, die die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Die vorliegende Anmeldung beansprucht die Priorität der vorläufigen US-Patentanmeldung Nummer 62/639,471 , eingereicht am 6. März 2018, deren Inhalte durch Bezugnahme hierin, als wenn vollständig in dieser Beschreibung dargelegt, aufgenommen sind.
  • HINTERGRUND
  • Viele moderne Computergeräte, einschließlich mobiler Geräte, Mobiltelefone, Personal-Computer und Tablets, stellen Benutzeroberflächen (UIs) bereit, um Benutzern eine Interaktion mit dem Computergerät zu ermöglichen. Beispielsweise können Anwendungsprogramme die UI verwenden, um unter Nutzung von Bildern, Text und grafischen Elementen, wie z. B. Fenstern, Dialogen, Popups, Bildern, Schaltflächen, Bildlaufleisten und Icons, mit einem Benutzer zu kommunizieren. Die UI kann außerdem Eingaben von Geräten, wie z. B. Berührungsbildschirmen, einer präsenzempfindlichen Anzeige, Computermäusen, Tastaturen und anderen Geräten, die dem Benutzer eine Steuerung der UI, und damit des Anwendungsprogramms, erlauben, empfangen.
  • In manchen Fällen kann die UI verwendet werden, um mit einem Betriebssystem zu interagieren, um das Computergerät zu steuern. Beispielsweise kann das Betriebssystem eine Systemsteuerungs- oder Einstellungsanwendung aufweisen, die die UI verwendet, um ein oder mehrere Fenster zu zeichnen, die Steuereinstellungen für einige Aspekte des Computergeräts betreffen, wie z. B. Audiosteuerungen, Videoausgaben, Computerspeicher und Humansprache(n), die von dem Betriebssystem verwendet werden (z. B. Wählen, ob Informationen auf Englisch, Französisch, Mandarin, Hindi, Russisch usw. empfangen werden sollen). Die Systemsteuerung-/Einstellungsanwendung kann anschließende Eingaben im Zusammenhang mit Fenstern unter Nutzung der UI empfangen. Die UI kann die Eingaben dem Betriebssystem über die Systemsteuerungs-/Einstellungsanwendung bereitstellen, um das Computergerät zu steuern.
  • Ein manuelles Eingeben von Daten in eine UI kann für Benutzer jedoch lästig, langsam und/oder umständlich sein oder zu Fehlern führen, insbesondere auf Mobilgeräten, die womöglich eine kleine UI aufweisen.
  • KURZDARSTELLUNG
  • Beispielhafte Ausführungsformen betreffen ein System, das es einem Betriebssystem eines Benutzergeräts ermöglicht, Autofill-Daten für Anwendungen mithilfe eines externen Anbieters basierend auf Crowdsourcing und dem Bewerten von vom Benutzer eingegeben Daten bereitzustellen, ohne die vom Benutzer eingegebenen Daten auf dem Benutzergerät zu speichern. Im Einzelnen, im Bewusstsein, dass der Benutzer sensible oder vertrauliche Informationen eingeben könnte, kann das Betriebssystem eines Benutzergeräts eine Teilmenge der durch eine Anwendung auf einer Benutzeroberfläche (UI) des Benutzergeräts angezeigten Inhalte ermitteln, die spezifische Informationen, die für diesen Benutzer spezifisch sind, ausschließt. Anschließend, in einem weiteren Aspekt, kann das Betriebssystem diese Teilmenge von Inhalten verwenden, um eine Autofill-Anfrage für die Anwendung zu erzeugen und an einen externen Anbieter zu übermitteln. Zusätzlich kann das Betriebssystem, basierend auf dieser Anfrage, eine Antwort von dem externen Anbieter empfangen, die zumindest einen oder mehrere vorgeschlagene Benutzerwerte und eine Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird, beinhaltet. Darüber hinaus kann das Betriebssystem auch eine Benutzereingabe in dem Texteingabefeld erkennen und, in Reaktion auf das Erkennen des Benutzereingabewertes in dem Texteingabefeld, eine Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten ermitteln. In einem noch weiteren Aspekt kann das Betriebssystem eine Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter übermitteln, wobei die Antwort die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Werten umfasst.
  • In einem Aspekt ist ein Verfahren bereitgestellt, das ein Ermitteln einer Teilmenge von Inhalten, die durch eine Anwendung auf einer Benutzeroberfläche (UI) eines Benutzergeräts angezeigt werden, beinhaltet, wobei die Teilmenge benutzerspezifische Informationen ausschließt. Das Verfahren beinhaltet ferner ein Übermitteln, an einen externen Anbieter, einer Autofill-Anfrage für die Anwendung, wobei die Autofill-Anfrage die Teilmenge der auf der UI angezeigten Inhalte umfasst. Das Verfahren beinhaltet außerdem ein Empfangen, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, eines oder mehrerer vorgeschlagener Benutzerwerte und einer Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird. Das Verfahren beinhaltet zusätzlich ein Erkennen eines Benutzereingabewertes in dem Texteingabefeld. Das Verfahren beinhaltet ferner, in Reaktion auf das Erkennen des Benutzereingabewertes in dem Texteingabefeld, ein Ermitteln einer Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten. Das Verfahren beinhaltet außerdem ein Übermitteln einer Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter, wobei die Antwort die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst.
  • In einem anderen Aspekt ist ein Benutzergerät bereitgestellt. Das Benutzergerät beinhaltet eine UI und ein Betriebssystem, das konfiguriert ist, eine Teilmenge von Inhalten zu bestimmen, die von einer Anwendung auf der UI des Benutzergeräts angezeigt werden, wobei die Teilmenge benutzerspezifische Informationen ausschließt. Das Betriebssystem ist ferner konfiguriert, eine Autofill-Anfrage für die Anwendung an einen externen Anbieter zu übermitteln, wobei die Autofill-Anfrage die Teilmenge der auf der UI angezeigten Inhalte umfasst. Das Betriebssystem ist außerdem konfiguriert, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, einen oder mehrere vorgeschlagene Benutzerwerte und eine Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird, zu empfangen. Das Betriebssystem ist zusätzlich konfiguriert, einen Benutzereingabewert in dem Texteingabefeld zu erkennen. Das Betriebssystem ist ferner konfiguriert, in Reaktion auf das Erkennen des Benutzereingabewertes in dem Texteingabefeld, eine Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten zu ermitteln. Das Betriebssystem ist außerdem konfiguriert, eine Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter zu übermitteln, wobei die Antwort die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst.
  • In einem anderen Aspekt ist ein nicht-flüchtiges computerlesbares Medium bereitgestellt, das darauf gespeicherte Anweisungen aufweist, die durch einen oder mehrere Prozessoren ausführbar sind, um ein Betriebssystem eines Benutzergeräts zu veranlassen, Funktionen auszuführen. Die Funktionen beinhalten ein Ermitteln einer Teilmenge von Inhalten, die durch eine Anwendung auf einer Benutzeroberfläche (UI) eines Benutzergeräts angezeigt werden, wobei die Teilmenge benutzerspezifische Informationen ausschließt. Diese Funktionen beinhalten außerdem ein Übermitteln, an einen externen Anbieter, einer Autofill-Anfrage für die Anwendung, wobei die Autofill-Anfrage die Teilmenge der auf der UI angezeigten Inhalte umfasst. Diese Funktionen beinhalten zusätzlich ein Empfangen, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, eines oder mehrerer vorgeschlagener Benutzerwerte und einer Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird. Diese Funktionen beinhalten außerdem ein Erkennen eines Benutzereingabewertes in dem Texteingabefeld. Diese Funktionen beinhalten ferner, in Reaktion auf das Erkennen des Benutzereingabewertes in dem Texteingabefeld, ein Ermitteln einer Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten. Diese Funktionen beinhalten zusätzlich ein Übermitteln einer Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter, wobei die Antwort die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst.
  • In einem anderen Aspekt ist ein System bereitgestellt, das eine UI, zumindest einen Prozessor und ein nicht-flüchtiges computerlesbares Medium mit darauf gespeicherten Anweisungen (die, bei Ausführung durch den zumindest einen Prozessor, den zumindest einen Prozessor veranlassen, Funktionen auszuführen) beinhaltet. Das System beinhaltet Mittel zum Ermitteln einer Teilmenge von Inhalten, die durch eine Anwendung auf einer Benutzeroberfläche (UI) eines Benutzergeräts angezeigt werden, wobei die Teilmenge benutzerspezifische Informationen ausschließt. Das System beinhaltet ferner Mittel zum Übermitteln, an einen externen Anbieter, einer Autofill-Anfrage für die Anwendung, wobei die Autofill-Anfrage die Teilmenge der auf der UI angezeigten Inhalte umfasst. Das System beinhaltet außerdem Mittel zum Empfangen, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, eines oder mehrerer vorgeschlagener Benutzerwerte und einer Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird. Das System beinhaltet zusätzlich Mittel zum Erkennen eines Benutzereingabewertes in dem Texteingabefeld. Das System beinhaltet ferner, in Reaktion auf das Erkennen des Benutzereingabewertes in dem Texteingabefeld, ein Ermitteln einer Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten. Das System beinhaltet außerdem ein Übermitteln einer Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter, wobei die Antwort die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst.
  • Die vorstehende Kurzdarstellung ist nur anschaulich und soll in keiner Weise einschränkend sein. Zusätzlich zu den zuvor beschriebenen exemplarischen Aspekten, Ausführungsformen und Merkmalen werden durch Bezugnahme auf die Figuren und die folgende ausführliche Beschreibung sowie die zugehörigen Zeichnungen weitere Aspekte, Ausführungsformen und Merkmale ersichtlich.
  • Figurenliste
    • 1 bildet eine verteilte Computerarchitektur gemäß beispielhaften Ausführungsformen ab.
    • 2 ist ein Ablaufdiagramm eines Verfahrens gemäß beispielhaften Ausführungsformen.
    • 3A zeigt ein Betriebssystem eines ersten Geräts, das eine Autofill-Anfrage an einen externen Anbieter sendet und vorgeschlagene Benutzerdaten und eine Feldklassifizierungsanforderung von dem externen Anbieter empfängt, gemäß beispielhaften Ausführungsformen.
    • 3B zeigt eine manuelle Benutzereingabe von Daten in ein Texteingabefeld der Anwendung auf dem ersten Mobilgerät und ein Erzeugen und Senden, durch das Betriebssystem, einer oder mehrerer Ähnlichkeitsmetriken an den externen Anbieter basierend auf den vom Benutzer eingegebenen Daten gemäß beispielhaften Ausführungsformen.
    • 4A zeigt ein Betriebssystem eines zweiten Mobilgeräts, das eine Autofill-Anfrage an den externen Anbieter sendet und vorgeschlagene Benutzerdaten und eine Feldklassifizierungsanforderung von dem externen Anbieter empfängt, gemäß beispielhaften Ausführungsformen.
    • 4B zeigt eine manuelle Benutzereingabe von Daten in ein Texteingabefeld der Anwendung auf dem zweiten Mobilgerät und ein Erzeugen und Senden, durch das Betriebssystem, einer oder mehrerer Ähnlichkeitsmetriken an den externen Anbieter basierend auf den vom Benutzer eingegebenen Daten gemäß beispielhaften Ausführungsformen.
    • 5 zeigt ein Betriebssystem eines dritten Benutzergeräts, das eine Autofill-Anfrage an den externen Anbieter sendet und einen Autofill-Wert von dem externen Anbieter empfängt und anzeigt, gemäß beispielhaften Ausführungsformen.
    • 6 ist ein Funktionsblockdiagramm eines beispielhaften Computergeräts gemäß beispielhaften Ausführungsformen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Es werden hierin exemplarische Verfahren und Systeme beschrieben. Die hierin beschriebene beispielhafte Ausführungsform oder das Merkmal ist nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Ausführungsformen oder Merkmalen auszulegen. Die hierin beschriebenen exemplarischen Ausführungsformen sind nicht als Einschränkung zu verstehen. Natürlich versteht es sich, dass gewisse Aspekte der offenbarten Systeme und Verfahren in einer großen Vielfalt von unterschiedlichen Konfigurationen angeordnet und kombiniert werden können, die hierin alle vorgesehen sind.
  • Darüber hinaus sollten die in den Figuren dargestellten bestimmten Anordnungen nicht als Einschränkung angesehen werden. Es versteht sich, dass andere Ausführungsformen mehr oder weniger der jeweiligen Elemente, die in einer spezifischen Figur dargestellt sind, beinhalten können. Des Weiteren können einige der dargestellten Elemente kombiniert oder weggelassen werden. Weiterhin kann eine exemplarische Ausführungsform Elemente beinhalten, die in den Figuren nicht dargestellt sind.
  • Natürlich versteht es sich, dass die Aspekte der vorliegenden Offenbarung, wie sie im Allgemeinen hierin beschrieben und in den Figuren dargestellt sind, in all den verschiedensten hierin vorgesehenen Konfigurationen angeordnet, ausgetauscht, kombiniert, getrennt und ausgebildet werden können.
  • Übersicht
  • Benutzergeräte, einschließlich Mobilgeräte, Mobiltelefone, Personal-Computer und Tablets, sind in modernen Kommunikationsnetzwerken allgegenwärtig. Viele dieser Geräte sind in der Lage, eine oder mehrere Anwendungen auszuführen, während sie gleichzeitig eine Kommunikation innerhalb solcher Netzwerke ermöglichen. Ferner stellen viele dieser Geräte auch eine oder mehrere UIs bereit, um es Benutzern zu ermöglichen, mit dem Benutzergerät zu interagieren.
  • Beispielsweise kann ein Benutzer eine UI verwenden, um mithilfe von Bildern, Text und anderen grafischen Elementen Informationen zu kommunizieren, die von einer Anwendung auf dem Benutzergerät verwendet werden sollen. Die UI kann auch Eingaben von zahlreichen mit dem Benutzergerät verbundenen Geräten empfangen, wie z. B. Berührungsbildschirmen, einer präsenzempfindlichen Anzeige, Computermäusen, Tastaturen und anderen Geräten, die dem Benutzer eine Steuerung der UI, und damit der Anwendung, erlauben.
  • In einem optimalen Szenario wäre der Benutzer in der Lage, die UI wirksam und effizient zu verwenden, solche Informationen zu kommunizieren; ein oder mehrere Faktoren können jedoch eine Beschränkung hinsichtlich der Fähigkeit des Benutzers, dies zu tun, darstellen. Wenn also unter einer solchen Beschränkung gearbeitet wird, kann, wenn die Notwendigkeit besteht, mehr und mehr Informationen zu kommunizieren, die Fähigkeit, diese Informationen effektiv und effizient zu kommunizieren, eingeschränkt werden.
  • Beispielsweise kann, bei Benutzergeräten mit kleinen Bildschirmen, ein Eintippen umfangreicher Textmengen in die UI zum Kommunizieren von Informationen zur Verwendung durch eine Anwendung sehr schwierig sein, insbesondere wenn der Text auch für den Benutzer schlecht zu merken ist. Dementsprechend kann es vorteilhaft sein, wenn die Anwendung in der Lage ist, sich diese Informationen zu merken, da diese somit nicht erneut übermittelt werden müssten, wenn die Anwendung das nächste Mal vom Benutzer eingesetzt wird. Mit zunehmender Anzahl an Anwendungen, mit denen ein Benutzer versucht zu kommunizieren, ist es jedoch plausibel, dass der Verwaltungsaufwand, der sich durch Verwendung der UI zum Kommunizieren umfangreicher Textmengen an jede dieser Anwendung (erstmalig oder anderweitig) ergibt, den Benutzer belasten kann. Dies kann auch dann gegeben sein, wenn sich einzelne Anwendungen die vom Benutzer eingegebenen Informationen merken. In der Folge beschäftigen sich Benutzer womöglich weniger mit diesen Anwendungen (oder stellen deren Nutzung komplett ein), sobald sie zur Eingabe solcher Informationen aufgefordert werden.
  • Einige dieser Probleme lassen sich durch die Verwendung von Verfahren, Systemen und Geräten angehen, die es dem Benutzer des Benutzergeräts erlauben, Informationen zur Verwendung durch solche Anwendungen effektiv und effizient zu kommunizieren, indem das Betriebssystem des Benutzergeräts als ein Vermittler zum Ermöglichen von Autofill über mehrere Anwendungen hinweg mithilfe eines externen Anbieters eingesetzt wird. Insbesondere kann ein Benutzer, in einigen Beispielen, Autofill auf Betriebssystemebene des Benutzergeräts zum Teil verwenden, indem er Autofill aktiviert, was einem autorisierten externen Anbieter erlaubt, Daten für Autofill bereitzustellen, Autofill-Daten abzurufen und Autofill-Daten für eine zukünftige Verwendung zu speichern.
  • Manche Benutzer können durch konstante Interaktion mit Autofill-Vorschlägen oder Anfragen zur Inanspruchnahme von Autofill durch das Betriebssystem oder externe Anbieter jedoch frustriert werden oder ermüden. Dieses Problem kann weiter gesteigert werden, wenn die dem Benutzer bereitgestellten Autofill-Vorschläge falsch oder falsch platziert sind, insbesondere wenn der Benutzer zuvor mit Autofill-Prozessen und externen Autofill-Anbietern interagiert hat. In einem Idealfall würde der externer Autofill-Anbieter daher genau wissen, wo genau die Daten des Benutzers in der auf dem Benutzergerät angezeigten Anwendung automatisch einzutragen sind.
  • Die meisten Betriebssysteme, Anwendungen und externen Autofill-Anbieter arbeiten jedoch nicht auf diese Weise und können gegenwärtig stattdessen nur auf relativ unzuverlässige Optionen zurückgreifen. In einem Beispiel können diese Dienste Heuristiken und heuristische Daten verwenden, um die richtige Bedeutung der vom Benutzer eingegebenen Daten und den Texteingabefeldern, in die der Benutzer diese Daten eingibt oder eingeben sollte, herauszufinden (z. B. könnte ein externer Anbieter nach Benutzernamen- oder Passwort-Teilzeichenfolgen in den Ressourcenkennungen einer Ansicht suchen). Das Problem bei diesen Heuristiken und heuristischen Daten besteht jedoch darin, dass sie unzuverlässig sind und zu genau dem Problem führen, dass der Benutzer typischerweise vermeiden will: mehr Zeit und Aufwand, als wenn der Benutzer die Daten manuell eingegeben hätte. Dieses Ineffizienzverhalten drückt sich auf verschiedene Weise aus.
  • In einem Beispiel kann der Benutzer Zeit und Aufwand in das Korrigieren häufig falsch geschätzter Autofill-Eingabedaten und Texteingabefelder (wenn der externe Anbieter z. B. Autofill-Daten für einen Benutzernamen an ein Passwortfeld sendet) investieren. In einem anderen Beispiel kann der Benutzer wahrnehmen, dass das Betriebssystem oder der externe Anbieter gar keine automatisch ausfüllbaren Felder erkennt, was für den Benutzer ebenso extrem frustrierend sein kann - insbesondere, wenn er weiß, dass eingegebene Daten für die Anwendung, oder bei einem oder mehreren externen Anbietern, mit der/dem er interagiert, zuvor gespeichert wurden.
  • Da jedoch, wie oben erläutert, der externe Anbieter für zukünftige Autofill-Einsätze womöglich keinen Zugriff auf die Daten, die der Benutzer eingeben kann, hat, bis der Benutzer einer Verwendung dieser Daten für zukünftige Autofill-Einsätze zustimmt, ist es für den externen Anbieter schwierig, dem Betriebssystem jedweden Einblick oder Anweisungen hinsichtlich Art, Umfang und Details der Daten, oder sogar, wie die vom Benutzer eingegebenen Daten für zukünftige Autofill-Einsätze verwendet werden, bereitzustellen.
  • Des Weiteren kann das Betriebssystem, aus Sicherheits- und/oder anderen Gründen, Benutzerdaten aus der automatisch ausgefüllten Anwendung ohne vorherige Benutzereinwilligung nicht für den externen Anbieter freigeben (und umgekehrt). Es besteht also ein direkter Bedarf daran, dass ein Betriebssystem in der Lage ist, mit einem externen Anbieter dynamisch zu interagieren, um intelligent vorgeschlagene Autofill-Daten zu erhalten, ohne spezifische Informationen eines Benutzers preiszugeben oder den Benutzer mit repetitiven oder falschen Autofill-Aufforderungen zu belästigen.
  • Offenbart hierin sind beispielhafte Ausführungsformen, die Verfahren, Systeme und Geräte betreffen, die es einem Benutzergerät ermöglichen, einem Benutzer, mithilfe eines externen Anbieters basierend auf Crowdsourcing und dem Bewerten der vom Benutzer eingegebenen Daten, mit Autofill-Daten für Anwendungen abzufragen, ohne die vom Benutzer eingegebenen Daten auf dem Benutzergerät zu speichern oder diese Daten zu kompromittieren, bevor der Benutzer seine Zustimmung erteilt hat. Im Einzelnen ermöglichen es die hierin offenbarten beispielhaften Ausführungsformen, einen Benutzer von Autofill-Daten, die zu Verwendung durch einen externen Anbieter vorgeschlagen werden, intelligent in Kenntnis zu setzen, ohne den Benutzer zur Zustimmung aufzufordern oder anderweitig damit zu belästigen oder ihm Unmengen an Optionen zu präsentieren, die sich aufgrund der verminderten UI-Grundfläche eines Mobilgeräts nur sehr schwierig verstehen oder vermitteln lassen. Gleichzeitig kann es erforderlich sein, bestimmte Informationen, die den Benutzer umgeben, mit höchster Sorgfalt, Vertraulichkeit und Sicherheit zu behandeln.
  • Bei den hierin vorgeschlagenen Autofill-Lösungen senden die Partien, anstatt die Daten des Benutzers willkürlich an den Autofill-Dienst oder zum Crowdsourcing an den externen Anbieter zu senden, die vorgeschlagenen Daten an das Betriebssystem, und das Betriebssystem bestätigt anschließend, ob der Benutzer diese Daten eingegeben hat. Anders ausgedrückt, bei einem hohen Maß an Approximation, kann eine beispielhafte Ausführungsform daher wie folgt arbeiten: (1) ein Betriebssystem eines Mobilgeräts sendet eine Autofill-Anfrage an einen externen Anbieter basierend auf einer sicheren Teilmenge von Inhalten, die auf der UI des Mobilgeräts angezeigt werden; (2) der externe Anbieter sendet generische Benutzerdaten an das Betriebssystem des Mobilgeräts und markiert eine Ausfüllanforderung als eine Feldklassifizierung erfordernd; (3) das Betriebssystem gibt die Feldklassifizierungsergebnisse zur weiteren Autofill-Nutzung basierend auf Ähnlichkeitsmetriken mit sämtlichen Daten, die durch den Benutzer in die Anwendung eingegeben wurden, zurück.
  • In einer beispielhaften Ausführungsform kann ein Betriebssystem eine Teilmenge von Inhalten, die durch eine Anwendung auf einer Benutzeroberfläche (UI) eines Benutzergeräts angezeigt werden, ermitteln, wobei die Teilmenge benutzerspezifische Informationen ausschließt. Insbesondere kann ein Benutzer mit einem Computergerät interagieren und sich dafür entscheiden, mit einer Anwendung auf diesem Gerät zu interagieren. Das Betriebssystem kann erkennen, dass der Benutzer mit einer Anwendung interagiert und dass Inhalte vorliegen, von denen das Betriebssystem weiß, dass sie zum automatischen Ausfüllen der Anwendung relevant sind.
  • Im Allgemeinen betreffen die durch eine Anwendung auf der UI angezeigten Inhalte alle mit einer Anwendung assoziierten Informationen, die durch das Betriebssystem ermittelt werden können. In einem Beispiel können diese Inhalte eine aktuelle Ansichtshierarchie der auf der UI des Benutzergeräts angezeigten Inhalte beinhalten oder Informationen enthalten, die empfindlich und/oder privat sind, wobei das Betriebssystem nur eine Teilmenge der Inhalte, welche die benutzerspezifischen Informationen ausschließt, ermittelt.
  • In einem weiteren Aspekt kann das Betriebssystem eine Autofill-Anfrage für die Anwendung an einen externen Anbieter übermitteln, wobei die Autofill-Anfrage die Teilmenge der auf der UI angezeigten Inhalte umfasst. Insbesondere kann das Betriebssystem, basierend auf der Teilmenge der angezeigten Inhalte, die benutzerspezifische Informationen ausschließt, eine Anfrage, die Informationen innerhalb oder assoziiert mit dieser Teilmenge von Inhalten enthält, an diese externen Anbieter senden, um sie, unter anderem, auf potenziell ausfüllbare Felder hinzuweisen, die auf der UI angezeigt werden. In jedem Fall kann diese Anfrage gleichermaßen hilfreich für das Betriebssystem und den Benutzer sein, da es dem externen Anbieter erlauben kann, die auf der UI angezeigten Inhalte sicher und vertraulich zu parsen, um zu ermitteln, welche Informationen zum Ermöglichen von Autofill für die Anwendung nützlich sein können (z. B. zu ermitteln, welche Texteingabefelder auf der Anwendung automatisch ausgefüllt werden können).
  • So oder so kann das Betriebssystem außerdem eine Autofill-Anfrage (die die Teilmenge der auf der UI angezeigten Inhalte umfasst) zur Verwendung mit der Anwendung übermitteln. In einigen Beispielen kann diese Anfrage in Reaktion auf eine Initiierung der Anwendung übermittelt werden. In einigen Beispielen kann diese Anfrage in Reaktion auf eine Auswahl eines Texteingabefelds der Anwendung übermittelt werden.
  • In noch einem anderen Aspekt kann das Betriebssystem, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, einen oder mehrere vorgeschlagene Benutzerwerte und eine Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird, empfangen. Im Allgemeinen kann die von dem externen Anbieter aus empfangene Antwort Daten bereitstellen, die zur Ermöglichung von Autofill gleichermaßen hilfreich für das Betriebssystem und den externen Anbieter sind.
  • In einem Beispiel kann die Antwort Daten, die für das Betriebssystem hilfreich zur Ermöglichung von Autofill sind, enthalten, die auf einem oder mehreren vorgeschlagenen Benutzerwerten basieren, für die der externe Anbieter ermittelt, dass sie mit Benutzerwerten übereinstimmen, die durch den Benutzer eingegeben wurden und/oder in der Anwendung oder in anderen Anwendungen zuvor automatisch ausgefüllt wurden. Auf diese Weise kann der externe Anbieter, bevor der externe Anbieter versucht, dem Benutzer Autofill-Werte über die Anwendung und die UI vorzuschlagen, dem Betriebssystem vorgeschlagene Benutzerwerte bereitstellen, in der Hoffnung, dass es in der Lage sein wird, Autofill-Textfelder in der Anwendung genau zu identifizieren, ohne den Benutzer zu belästigen oder zu behindern. Gleichzeitig ist es jedoch möglich, dass das Betriebssystem eine Überlastung durch „Brute-Force“-Versuche seitens des externen Anbieters zum Identifizieren der besten Möglichkeiten, dem Benutzer Autofill-Werte vorzuschlagen (z. B. durch Senden von übermäßigen Mengen an vorgeschlagenen Benutzerwerten in der Hoffnung, dass einige davon letztendlich zu den angezeigten Textfeldern auf der Anwendung passen, insbesondere, wenn diese eine große Anzahl an Benutzern umfasst, Skalierung über eine Partie von Benutzern), vermeiden will. Um einem solchen Brute-Force-Angriff entgegenzutreten, könnte das Betriebssystem, in beispielhaften Ausführungsformen, eine Reihe von Taktiken anwenden.
  • Beispielsweise könnte das Betriebssystem die vorgeschlagenen Benutzerwerte und/oder die Feldklassifizierungsanforderung von dem externen Anbieter über eine Schnittstelle (z. B. eine Anwendungsprogrammierschnittstelle oder API) empfangen, die Folgendes begrenzt: (1) die Gesamtanzahl an vorgeschlagenen Benutzerwerten, die von dem externen Anbieter empfangen werden, basierend auf einem oder mehreren vorbestimmten Faktoren; (2) Charakteristika der vorgeschlagenen Benutzerwerte selbst, basierend auf einem oder mehreren Merkmalen oder Charakteristika der vorgeschlagenen Benutzerwerte; (3) die Gesamtanzahl an Feldklassifizierungsanforderungen, basierend auf einer vorbestimmten maximalen Gesamtanzahl an Feldklassifizierungsanforderungen oder der Häufigkeit, mit der diese empfangen werden; (4) die Anzahl an Benutzereingabefeldern für die Feldklassifizierungsanforderung basierend auf einer vorbestimmten maximalen Anzahl an Benutzereingabefeldern; und/oder (5) die Anzahl an Feldklassifizierungsanforderungen für jedes Texteingabefeld auf eine vorbestimmte maximale Anzahl an Feldklassifizierungsanforderungen je Feld (z. B. würde die Schnittstelle nicht mehr als drei Feldklassifizierungsanforderungen je Texteingabefeld zulassen).
  • Zusätzlich zu den vorgeschlagenen Benutzerwerten und den Feldklassifizierungsanforderungen kann der externe Anbieter zusätzliche Informationen in Reaktion auf eine Autofill-Anfrage des Betriebssystems bereitstellen, die dem Betriebssystem bei einer Ermöglichung von Autofill helfen. Beispielsweise kann der externe Anbieter, neben den vorgeschlagenen Benutzerwerten und Feldklassifizierungsanforderungen, einen Autofill-Wert für ein von der Anwendung angezeigtes zusätzliches Texteingabefeld bereitstellen, wobei das zusätzliche Textfeld eines ist, dass der externe Anbieter bereits erfolgreich identifiziert hat. In einigen Beispielen kann das Betriebssystem, in Reaktion, auch veranlassen, dass der Autofill-Wert in dem zusätzlichen Texteingabefeld angezeigt wird.
  • In jedem dieser Szenarien ist es jedoch möglich, dass der externe Anbieter die Erwartungen des Betriebssystems oder die Einschränkungen der Schnittstelle nicht einhält. Eines dieser kann dazu führen, dass das Betriebssystem reagiert, indem es einen Zugriff durch den externen Anbieter beschränkt. Beispielsweise kann das Betriebssystem eine vorbestimmte Zuweisung seiner Ressourcen aufweisen, die den hierin beschriebenen Prozessen, oder einem beliebigen Teil davon, gewidmet sind, und, wenn das Betriebssystem ermittelt, dass diese vorbestimmte Ressourcenzuweisung überschritten wurde, kann es Abhilfemaßnahmen ergreifen (z. B. alle weiteren vorgeschlagenen Benutzerwerte oder Feldklassifizierungsanforderungen von einem oder mehreren externen Anbietern ablehnen).
  • In einem anderen Aspekt kann das Betriebssystem auch einen Benutzereingabewert in einem Texteingabefeld, für das eine Feldklassifizierungsanforderung empfangen worden ist, erkennen und, in Reaktion, eine Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten ermitteln. In einigen Beispielen kann sich diese Ähnlichkeitsmetrik in einer Bewertung ausdrücken, die basierend darauf erzeugt wird, wie eng der vom Benutzer eingegebene Wert an dem einen oder den mehreren der vorgeschlagenen Benutzerwerte war, die durch den externen Anbieter bereitgestellt wurden. Ferner können die der Berechnung dieser Ähnlichkeitsmetriken zugrundeliegenden Verfahren (z. B. die zugrundeliegenden Vergleichsmodelle oder Algorithmen) (z. B. ein Zeichenkettenvergleichsmodell oder ein Editierdistanzmodell) variieren und sogar dynamisch sein (z. B. ist das zugrundeliegende Vergleichsmodell zwischen Autofill-Anfragen aktualisierbar, und wird eventuell sogar über eine zugehörige Quelle oder Drittanbieter-Quelle (z. B. Google Play Store) erhalten). Auch können diese Verfahren durch den externen Anbieter auswählbar sein (z. B. kann das Betriebssystem eine Liste von zugrundeliegenden Vergleichsmodellen an den externen Anbieter übermitteln und, basierend auf dem ausgewählten zugrundeliegenden Vergleichsmodell des externen Anbieters, die Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten durch Anwenden des ausgewählten zugrundeliegenden Vergleichsmodells ermitteln) und/oder standardmäßig eingestellt sein.
  • In einem noch weiteren Aspekt kann das Betriebssystem eine Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter übermitteln, wobei die Antwort die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst. In einigen Beispielen kann diese Übermittlung von Ähnlichkeitsmetriken nicht unterscheidbar sein (z. B. kann das Betriebssystem Ähnlichkeitsmetriken für jeden vorgeschlagenen Benutzerwert erzeugen und die Ähnlichkeitsmetriken für jeden von einer Vielzahl von vorgeschlagenen Benutzerwerten übermitteln) oder gezielter und analytischer sein (z. B. kann das Betriebssystem Ähnlichkeitsmetriken für jeden vorgeschlagenen Benutzerwerte erzeugen, jedoch nur die Ähnlichkeitsmetrik für den am besten passenden Benutzerwert aus einer Vielzahl von vorgeschlagenen Benutzerwerten übermitteln). So oder so können die Ähnlichkeitsmetriken durch den externen Anbieter verwendet werden, um potenziell automatisch ausfüllbare Felder der Anwendung besser zu identifizieren, sodass es dem externen Anbieter möglich ist, bessere Autofill-Dienste bereitzustellen, wenn die Anwendung in Zukunft von demselben oder einem anderen Benutzer ausgeführt wird.
  • Verteilte Computerarchitektur
  • Es wird jetzt im Detail auf verschiedene Ausführungsformen Bezug genommen, von denen Beispiele in den begleitenden Zeichnungen veranschaulicht sind. In der folgenden ausführlichen Beschreibung werden zahlreiche spezifische Details dargelegt, um ein gründliches Verständnis der vorliegenden Offenbarung und der beschriebenen Ausführungsformen zu ermöglichen. Die vorliegende Offenbarung kann jedoch ohne diese spezifischen Details umgesetzt werden. In anderen Fällen wurden bekannte Verfahren, Vorgänge, Komponenten, Schaltungen nicht ausführlich beschrieben, um die Aspekte der Ausführungsformen nicht unnötig unklar zu gestalten.
  • 1 zeigt eine verteilte Computerarchitektur 100 mit Servergeräten 108, 110, die konfiguriert sind, über das Netzwerk 106 mit Benutzergeräten 104a, 104b, 104c, 104d, 104e und externen Anbietern 112 und 114 zu kommunizieren, gemäß beispielhaften Ausführungsformen. Das Netzwerk 106 kann einem lokalen Netzwerk (LAN), einem Großraumnetzwerk (WAN), einem unternehmensinternen Netzwerk, dem öffentlichen Internet oder einem einer beliebigen anderen Art von Netzwerk, das zur Bereitstellung von Kommunikationspfaden zwischen vernetzten Computergeräten konfiguriert ist, entsprechen. Das Netzwerk 106 kann auch einer Kombination aus einem oder mehreren LANs, WANs, unternehmensinterner Netzwerke und/oder dem öffentlichen Internet entsprechen.
  • Obwohl 1 nur eine kleine Sammlung von Benutzergeräten zeigt, können verteilte Anwendungsarchitekturen zehn, hunderte, oder tausende Benutzergeräte bedienen. Darüber hinaus kann es sich bei den Benutzergeräten 104a, 104b, 104c, 104d, 104e (oder beliebigen zusätzlichen programmierbaren Geräten) um eine beliebige Art von Computergerät handelt, das in der Lage ist, einem Benutzer zu ermöglichen, das Betriebssystem des Computergeräts zu steuern, um Autofill mithilfe eines externen Anbieters über mehrere Anwendungen hinweg zu ermöglichen, wie z. B. ein normaler Laptop-Computer, Desktop-Computer, tragbares Computergerät, mobiles Computergerät, am Kopf anbringbares Gerät (HMD), Netzwerkterminal, Drahtloskommunikationsgerät (z. B. ein Smartphone oder Mobiltelefon) usw. In einigen Ausführungsformen, wie z. B. angezeigt mit den Benutzergeräten 104a, 104b und 104c, können Benutzergeräte direkt mit dem Netzwerk 106 verbunden sein. In anderen Ausführungsformen, wie z. B. angezeigt mit Benutzergeräten 104d und 104e, können Benutzergeräte über ein assoziiertes Computergerät, wie z. B. das Benutzergerät 104c, indirekt mit dem Netzwerk 106 verbunden sein. In solchen Ausführungsformen kann das Benutzergerät 104c als ein assoziiertes Computergerät dienen, um elektronische Kommunikationen zwischen den Benutzergeräten 104d und 104e und dem Netzwerk 106 weiterzugeben. In noch anderen Ausführungsformen, die in 1 nicht gezeigt sind, kann ein Benutzergerät sowohl direkt als auch indirekt mit dem Netzwerk 106 verbunden sein.
  • Servergeräte 108, 110 können als Teil eines cloudbasierten Serversystems arbeiten, das Computerverarbeitungsressourcen und Daten mit Computern und anderen Geräten auf Anfrage teilt. Insbesondere können die Servergeräte 108, 110 dazu konfiguriert sein, einen oder mehrere Dienste auszuführen, die von den Benutzergeräten 104a-104e angefordert werden. Beispielsweise kann das Servergerät 108 und/oder 110 den Benutzergeräten 104a-104e Inhalte bereitstellen. In einem weiteren Aspekt kann das Servergerät 108 und/oder 110 den Benutzergeräten 104a-104e Inhalte direkt oder durch Ermöglichen der Übermittlung der von Dritten angeforderten Inhalte bereitstellen. Die Inhalte können Webseiten, Hypertext, Scripts, binäre Daten, wie z. B. kompilierte Software, Bilder, Audio und/oder Video beinhalten, sind jedoch nicht darauf beschränkt. Die Inhalte können komprimierte und/oder unkomprimierte Inhalte beinhalten. Die Inhalte können verschlüsselt und/oder unverschlüsselt sein.
  • Die externen Anbieter 112, 114 können auch als Teil eines cloudbasierten Serversystems arbeiten, das Computerverarbeitungsressourcen und Daten mit Computern und anderen Geräten auf Anfrage teilt. Insbesondere können die externen Anbieter 112, 114 Inhalte in dem Netzwerk 106 gemäß beispielhaften Ausführungsformen bereitstellen, empfangen, verwalten und übermitteln. Beispielsweise kann der externe Anbieter 112 und/oder 114 eine Anfrage zur Verwendung von Inhalten durch Benutzergeräte 104a-104e empfangen, und eine Antwort, die die Inhalte enthält, an Geräte, die mit dem Netzwerk verbunden sind, übermitteln.
  • In den Beispielen kann das Servergerät 108 und/oder 110 mithilfe von externen Anbietern 112 und/oder 114 Inhalte bereitstellen, die automatisches Autofill über mehrere Anwendungen auf Benutzergeräten 104a-104e hinweg ermöglichen. Zusätzlich kann das Servergerät 108 und/oder 110 Benutzergeräten 104a-104e einen Zugriff auf Software für Datenbank, Suche, Berechnung, Grafik, Audio, Video, World-Wide-Web/Internet-Nutzung und/oder andere Funktionen ermöglichen. Es sind auch viele andere Beispiele für Inhalte möglich.
  • Verfahrensflussdiagramm und beispielhafte Ausführungsformen
  • 2 stellt ein Ablaufdiagramm dar, das ein Verfahren 200 zeigt, das durchgeführt werden kann, um einem externen Anbieter eine bessere Bereitstellung von Autofill-Diensten für eine Anwendung zu ermöglichen, die von einem Betriebssystem eines Benutzergeräts über die UI angezeigt wird. Das Verfahren 200 kann durch ein oder mehrere Computergeräte, wie z.B. die Benutzergeräte 104a-104e und den externen Anbieter 112 und/oder 114, und in einigen Fällen auch Server 108 und/oder 110, durchgeführt werden, wie unter Bezugnahme auf 1 dargestellt. In zusätzlichen Beispielen kann das Verfahren 200 durch Benutzergeräte 104a-104e und den externen Anbieter 112 und/oder 114, und in einigen Fällen auch Server 108 und/oder 110, der als Teil eines cloudbasierten Systems arbeitet, durchgeführt werden. Neben denen, die in 1 speziell dargestellt sind, kann das Verfahren 200 zusätzlich durch eine oder mehrere andere Arten von Computergeräten durchgeführt werden.
  • Zusätzlich, obwohl die Schritte des Verfahrens 200 nachfolgend als durch ein Betriebssystem abgeschlossen beschrieben sind, könnten andere Komponenten, Anwendungen und/oder Technologien im Zusammenhang mit dem Benutzergerät die Schritte des Verfahrens 200 durchführen.
  • Weiterhin sei darauf hingewiesen, dass die im Zusammenhang mit den hierin beschriebenen Ablaufdiagrammen beschriebene Funktionalität als Spezial- und/oder konfigurierte Universal-Hardwaremodule oder als Teile von Programmcode, der zum Erreichen von speziellen Logikfunktionen, Ermittlungen und/oder Schritten, die in Verbindung mit dem in 2 gezeigten Ablaufdiagramm beschrieben sind, von einem Prozessor ausgeführt wird, implementiert sein kann. Der Programmcode kann, wenn dieser verwendet wird, auf jeder Art von computerlesbarem Medium, wie z. B. ein Speichergerät, das ein Laufwerk oder eine Festplatte beinhaltet, gespeichert werden.
  • Außerdem kann jeder Block des in 2 dargestellten Ablaufdiagramms eine Schaltung darstellen, die so verdrahtet ist, dass sie die spezifischen logischen Funktionen innerhalb des Prozesses durchführt. Wenn nicht speziell angegeben, können Funktionen in dem in 2 dargestellten Ablaufdiagramm in einer anderen als der gezeigten oder erläuterten Reihenfolge, einschließlich einer im Wesentlichen gleichzeitigen Ausführung von getrennt beschriebenen Funktionen oder in einigen Beispielen sogar in umgekehrter, je nach der beteiligten Funktionalität, ausgeführt werden, solange die Gesamtfunktionalität des beschriebenen Verfahrens beibehalten wird.
  • Bei Block 210 kann das Verfahren 200 ein Ermitteln einer Teilmenge der Inhalte beinhalten, die durch eine Anwendung auf einer Benutzeroberfläche (UI) eines Benutzergeräts angezeigt werden, wobei die Teilmenge benutzerspezifische Informationen ausschließt. Insbesondere kann ein Benutzer mit einem Computergerät interagieren und sich dafür entscheiden, mit einer Anwendung auf diesem Gerät zu interagieren. Das Betriebssystem kann erkennen, dass der Benutzer mit einer Anwendung interagiert und dass Inhalte vorliegen, von denen das Betriebssystem weiß, dass sie zum automatischen Ausfüllen der Anwendung relevant sind.
  • Im Allgemeinen kann das Betriebssystem bestimmte Daten erkennen, die üblicherweise mit Autofill assoziiert sind. In einem Beispiel kann das Betriebssystem erkennen, dass ein mit einer Anwendung assoziiertes Texteingabefeld einen üblichen Autofill-Deskriptor (z. B. „E-Mail“ oder „Benutzername“) enthält oder mit diesem assoziiert ist.
  • In einem Beispiel kann das Betriebssystem aufgrund einer Auslösung eines Ereignisses, womöglich eines Autofill-Auslöseereignisses, mit dem Ermitteln einer Teilmenge von Inhalten beginnen, die durch eine Anwendung auf der UI angezeigt werden. Derartige Ereignisse können Informationen über den aktuellen Zustand des Benutzergeräts oder einer darauf befindlichen Anwendung, bereitstellen, einschließlich des Zustands einer Interaktion des Benutzers mit dem Gerät. Es können auch Autofill-Auslöseereignisse verwendet werden, um das Betriebssystem dabei zu unterstützen, zum richtigen Zeitpunkt herauszufinden, wann autorisiertes Autofill zu aktivieren ist. In einigen Beispielen können Autofill-Auslöseereignisse direkte oder indirekte Benutzerinteraktionen mit dem Gerät sein. Im Allgemeinen kann eine Benutzerinteraktion mit dem Gerät, sobald Autofill durch den Benutzer zugelassen wurde, jedoch durch das Betriebssystem überwacht werden.
  • In einer Ausführungsform können beispielhafte Autofill-Auslöseereignisse durch Daten angezeigt werden, die mit direkter Benutzerinteraktion mit dem Benutzergerät assoziiert sind, wie z. B., neben anderen Szenarien, ein Initiieren einer Anwendung durch den Benutzer oder ein Auswählen eines Texteingabefelds einer Anwendung durch den Benutzer.
  • In anderen Beispielen können die Autofill-Auslöseereignisse Daten beinhalten, die mit einer indirekten Benutzerinteraktion mit dem Benutzergerät assoziiert sind, wie z. B. ein Signal dafür, dass eine Anwendung initiiert wurde, oder ein Signal dafür, dass ein Texteingabefeld der Anwendung, oder ein anderer Parameter der Inhalte, die auf der UI des Benutzergeräts angezeigt werden, im Fokus ist. In einem weiteren Aspekt kann die indirekte Interaktion des Benutzers mit dem Benutzergerät durch eine Grafik oder eine GUI, wie z. B. eine auf der UI angezeigte Tastatur, reflektiert werden.
  • Im Allgemeinen betreffen die durch eine Anwendung auf der UI angezeigten Inhalte alle mit einer Anwendung assoziierten Informationen, die durch das Betriebssystem ermittelt werden können. In einem Beispiel können diese Inhalte eine aktuelle Ansichtshierarchie der auf der UI des Benutzergeräts angezeigten Inhalte beinhalten. Da die Inhalte aber auch Informationen enthalten können, die sensibel und/oder privat sind, ermittelt das Betriebssystem nur eine Teilmenge der Inhalte, welche die benutzerspezifischen Informationen ausschließt.
  • In einigen Beispielen können die benutzerspezifischen Informationen personenbezogene Informationen oder beliebige andere Informationen beinhalten, die allein oder zusammen mit anderen Informationen verwendet werden können, um eine Einzelperson zu identifizieren, zu kontaktieren oder zu orten, oder ein Individuum im Kontext von anderen Informationen oder Daten zu identifizieren. In weiteren Beispielen können die benutzerspezifischen Informationen Informationen beinhalten, die der Benutzer als sensibel und/oder privat gekennzeichnet hat.
  • In noch anderen Beispielen können die benutzerspezifischen Informationen Informationen beinhalten, die basierend auf einem oder mehreren Faktoren im Zusammenhang mit dem Benutzer als sensibel und/oder privat gekennzeichnet wurden. Beispielsweise können die benutzerspezifischen Informationen Informationen beinhalten, die, neben anderen Möglichkeiten, basierend auf der geografischen Region, in der sich der Benutzer, das Benutzergerät und/oder der externe Anbieter befinden, als sensibel und/oder privat gekennzeichnet wurden. In noch anderen Beispielen können die benutzerspezifischen Informationen Informationen beinhalten, die basierend auf einem Attribut des Benutzers (z. B. dem Alter des Benutzers) als sensibel und/oder privat gekennzeichnet wurden.
  • Bei Block 220 beinhaltet das Verfahren 200 ferner ein Übermitteln, an einen externen Anbieter, einer Autofill-Anfrage für die Anwendung, wobei die Autofill-Anfrage die Teilmenge der auf der UI angezeigten Inhalte umfasst. Die Anfrage kann an einen vorausgewählten externen Anbieter, um die Benutzung von Autofill auf dem Benutzergerät zu ermöglichen, oder an mehrere externe Anbieter, mit denen der Benutzer zuvor interagiert haben kann oder nicht, gesendet werden. Insbesondere kann das Betriebssystem, basierend auf der Teilmenge der angezeigten Inhalte, die benutzerspezifische Informationen ausschließt, eine Anfrage, die Informationen innerhalb oder assoziiert mit dieser Teilmenge von Inhalten enthält, an diese externen Anbieter senden, um sie, unter anderem, auf potenziell ausfüllbare Felder hinzuweisen, die auf der UI angezeigt werden. In jedem Fall kann diese Anfrage gleichermaßen hilfreich für das Betriebssystem und den Benutzer sein, da es dem externen Anbieter erlauben kann, die auf der UI angezeigten Inhalte sicher und vertraulich zu parsen, um zu ermitteln, welche Informationen zum Ermöglichen von Autofill für die Anwendung nützlich sein können (z. B. zu ermitteln, welche Texteingabefelder auf der Anwendung automatisch ausgefüllt werden können).
  • In einigen Beispielen kann die Anfrage Informationen beinhalten, die mit den auf der UI angezeigten Texteingabefeldern assoziiert sind. In einem Aspekt können diese Informationen einen oder mehrere mit den Texteingabefeldern assoziierte Deskriptoren beinhalten. Beispielsweise können diese Deskriptoren, neben anderen Möglichkeiten, Begriffe wie z. B. „Name“, „Benutzername“, „E-Mail“, „Passwort“, „Adresse“, „Stadt“, „Bundesland“, „Postleitzahl“, „Land“, „Kontonummer“ und/oder „Kartennummer“ beinhalten.
  • In anderen Beispielen kann die Anfrage Informationen beinhalten, die mit der aktuellen Ansichtshierarchie des Benutzergeräts assoziiert sind. In einem Aspekt können diese Informationen Informationen beinhalten, die mit einem Kompilieren oder Verwalten des Teilsatzes der auf der UI angezeigten Inhalte assoziiert sind (z. B. ein zugrundeliegendes Script und/oder Code). In einem anderen Aspekt können diese Informationen Informationen beinhalten, die mit bestimmten Näherungen der Teilmenge der auf der UI angezeigten Inhalte assoziiert sind (z. B. Drahtgitter-Darstellungen der Teilmenge von Inhalten). In noch einem weiteren Aspekt können diese Informationen Informationen beinhalten, die mit der Architektur der auf der UI angezeigten Teilmenge von Inhalten assoziiert sind (z. B. Informationen im Zusammenhang mit dem relativen Layout, dem linearen Layout, Schaltflächen, dem Tabellenlayout, Tabellenzeilen, Kontrollkästchen und oder anderen Elementen).
  • So oder so kann das Betriebssystem eine Autofill-Anfrage (die die Teilmenge der auf der UI angezeigten Inhalte umfasst) zur Verwendung mit der Anwendung übermitteln. In einigen Beispielen kann diese Anfrage in Reaktion auf eine Initiierung der Anwendung übermittelt werden. In einigen Beispielen kann diese Anfrage in Reaktion auf eine Auswahl eines Texteingabefelds der Anwendung übermittelt werden.
  • In noch einigen anderen Beispielen kann diese Anfrage Metadaten im Zusammenhang mit dem einen oder den mehreren Texteingabefeldern umfassen. Bei diesen Metadaten kann es sich um Daten oder Informationen handeln, die Informationen über andere Daten bereitstellen (z. B. deskriptive Metadaten (die eine Ressource für Zwecke wie z. B. eine Auffindung und Identifizierung beschreiben können und Elemente wie z. B. Titel, Zusammenfassung, Autor und Schlüsselwörter beinhalten können), strukturelle Metadaten (die Datencontainer betreffen können und angeben, wie zusammengesetzte Objekte zusammengesetzt werden, zum Beispiel, wie Seiten angeordnet sind, um Kapitel zu bilden, und die Arten, Versionen, Beziehungen und andere Charakteristika von digitalen Materialien beschreiben) und administrative Metadaten (die Informationen bereitstellen können, um bei der Verwaltung einer Ressource zu helfen, wie z. B. wann und wie diese erstellt wurde, Dateityp und andere Informationen, und wer darauf zugreifen kann)).
  • Bei Block 230 kann das Verfahren 200 ferner ein Empfangen, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, eines oder mehrerer vorgeschlagener Benutzerwerte und einer Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird, beinhalten. Im Allgemeinen kann die von dem externen Anbieter aus empfangene Antwort Daten bereitstellen, die zur Ermöglichung von Autofill gleichermaßen hilfreich für das Betriebssystem und den externen Anbieter sind.
  • In einem Beispiel kann die Antwort Daten, die für das Betriebssystem hilfreich zur Ermöglichung von Autofill sind, enthalten, die auf einem oder mehreren vorgeschlagenen Benutzerwerten basieren, bei denen der externe Anbieter davon ausgeht, dass sie mit Benutzerwerten übereinstimmen, die durch den Benutzer eingegeben wurden und/oder in der Anwendung oder in anderen Anwendungen zuvor automatisch ausgefüllt wurden. Auf diese Weise kann der externe Anbieter dem Betriebssystem vorgeschlagene Benutzerwerte bereitstellen, in der Hoffnung, dass es in der Lage sein wird, Texteingabefelder in der Anwendung zu identifizieren, sodass der externe Anbieter die Eingabefelder in Zukunft automatisch ausfüllen kann, ohne den Benutzer zu belästigen oder auf eine Eingabe des Benutzers angewiesen zu sein, bevor der externe Anbieter versucht, dem Benutzer über die Anwendung und UI Autofill-Werte vorzuschlagen.
  • Gleichzeitig ist es jedoch möglich, dass das Betriebssystem eine Überlastung durch „Brute-Force“-Versuche seitens des externen Anbieters zum Identifizieren der besten Möglichkeiten, dem Benutzer Autofill-Werte durch Senden von übermäßigen Mengen an vorgeschlagenen Benutzerwerten in der Hoffnung, dass einige davon letztendlich zu den angezeigten Texteingabefeldern auf der Anwendung passen, vorzuschlagen, vermeiden will. Um einem solchen Brute-Force-Angriff entgegenzutreten, könnte das Betriebssystem eine Reihe von Taktiken anwenden.
  • In einem Beispiel könnte das Betriebssystem die vorgeschlagenen Benutzerwerte von dem externen Anbieter über eine Schnittstelle empfangen, die die Gesamtanzahl an vorgeschlagenen Benutzerwerten, die von dem externen Anbieter aus empfangen werden, basierend auf einem oder mehreren vorbestimmten Faktoren begrenzt. Beispielsweise kann eine solche Schnittstelle die Gesamtanzahl an vorgeschlagenen Benutzerwerten basierend auf einer vorbestimmten maximalen Gesamtanzahl an vorgeschlagenen Benutzerwerten begrenzen (z. B. würde die Schnittstelle nicht mehr als zehn vorgeschlagene Benutzerwerte von einem beliebigen externen Anbieter zulassen). In einem anderen Beispiel kann die Schnittstelle die Anzahl an vorgeschlagenen Benutzerwerten für jedes Texteingabefeld auf eine vorbestimmte maximale Anzahl an vorgeschlagenen Benutzerwerten je Feld beschränken (z. B. würde die Schnittstelle nicht mehr als drei vorgeschlagene Benutzerwerte je Texteingabefeld zulassen).
  • In noch anderen Beispielen kann die Schnittstelle Charakteristika der vorgeschlagenen Benutzerwerte selbst basierend auf einem oder mehreren Merkmalen oder Charakteristika des vorgeschlagenen Benutzerwertes beschränken. Beispielsweise kann die Schnittstelle jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem einzelnen Charakteristikum (z. B. einer vorbestimmten Mindestanzahl an Zeichen) oder auf mehreren Charakteristika begrenzen (z. B. könnte die Schnittstelle jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten auf eine erste vorbestimmte Mindestanzahl an Zeichen beschränken, wenn der vorgeschlagene Benutzerwert nur numerische Zeichen beinhaltet, und auf eine zweite vorbestimmte Mindestanzahl an Zeichen, wenn der vorgeschlagene Benutzerwert zumindest ein nicht numerisches Zeichen beinhaltet).
  • Ähnlich wie bei den vorgeschlagenen Benutzerwerten des externen Anbieters kann das Betriebssystem womöglich auch die Anzahl oder Arten von Feldklassifizierungsanforderungen, die von dem externen Anbieter aus in Reaktion auf die Autofill-Anfrage des Betriebssystems empfangen werden, begrenzen wollen. Beispielsweise kann die Schnittstelle die Gesamtanzahl an Feldklassifizierungsanforderungen basierend auf einer vorbestimmten maximalen Gesamtanzahl an Feldklassifizierungsanforderungen (z. B. würde die Schnittstelle nicht mehr als zehn Feldklassifizierungsanforderungen von einem beliebigen externen Anbieter zulassen) oder die Häufigkeit begrenzen, mit der der externe Anbieter diese bereitstellt (die Schnittstelle würde nicht mehr als zehn Feldklassifizierungsanforderungen pro Stunde von einem beliebigen externen Anbieter zulassen).
  • In einem anderen Beispiel kann die Schnittstelle die Anzahl an Feldklassifizierungsanforderungen basierend auf der Anzahl an Benutzereingabefeldern einer Anwendung begrenzen (z. B. würde die Schnittstelle nicht mehr als zehn Feldklassifizierungsanforderungen zulassen, da nur zwei Benutzereingabefelder vorhanden sind). Ebenso kann die Schnittstelle auch die Anzahl an Feldklassifizierungsanforderungen für jedes Texteingabefeld auf eine vorbestimmte maximale Anzahl an Feldklassifizierungsanforderungen je Feld beschränken (z. B. würde die Schnittstelle nicht mehr als drei Feldklassifizierungsanforderungen je Texteingabefeld zulassen).
  • Zusätzlich zu den vorgeschlagenen Benutzerwerten und Feldklassifizierungsanforderungen kann der externe Anbieter in Reaktion auf die Autofill-Anfrage des Betriebssystems zusätzliche Informationen bereitstellen, die dem Betriebssystem bei einer Ermöglichung von Autofill helfen. Beispielsweise kann der externe Anbieter, neben den vorgeschlagenen Benutzerwerten und Feldklassifizierungsanforderungen, einen Autofill-Wert für ein von der Anwendung angezeigtes zusätzliches Texteingabefeld bereitstellen (z. B. kann der externe Anbieter wissen, dass er über einen Autofill-Wert verfügt, der für Autofill in einem speziellen zusätzlichen Texteingabefeld ohne weitere Analyse vorgeschlagen werden kann). In einigen Beispielen kann das Betriebssystem, in Reaktion, auch veranlassen, dass der Autofill-Wert in dem zusätzlichen Texteingabefeld angezeigt wird.
  • In jedem dieser Szenarien ist es jedoch möglich, dass der externe Anbieter die Erwartungen des Betriebssystems oder die Einschränkungen der Schnittstelle, oder beides, nicht einhält. Dies kann dazu führen, dass das Betriebssystem reagiert, indem es einen Zugriff durch den externen Anbieter beschränkt. Beispielsweise kann das Betriebssystem eine vorbestimmte Zuweisung seiner Ressourcen aufweisen, die den hierin beschriebenen Prozessen, oder einem beliebigen Teil davon, gewidmet sind (z. B. kann das Betriebssystem eine vorbestimmte Systemressourcenzuweisung von 5 % zum Empfangen vorgeschlagener Benutzerwerte und Feldklassifizierungsanforderungen von externen Anbietern aufweisen). In einigen Fällen, wenn das Betriebssystem ermittelt, dass diese vorbestimmte Ressourcenzuweisung überschritten worden ist, kann es ferner Abhilfemaßnahmen ergreifen (z. B. kann das Betriebssystem, in Reaktion auf das Ermitteln, dass seine vorbestimmte Ressourcenzuweisung von 5 % überschritten wurde, ein Empfangen weiterer vorgeschlagener Benutzerwerte oder Feldklassifizierungsanforderungen von den externen Anbietern ablehnen).
  • Bei Block 240 kann das Verfahren 200 ferner ein Ermitteln eines Benutzereingabewertes in dem Texteingabefeld beinhalten. Der Benutzereingabewert kann über einen Zeitraum empfangen werden, während der Benutzer einzelne Zeichen, Zahlen oder Wörter eingibt (z. B. eintippt). Das Betriebssystem kann auch Texteingabefelder überwachen, für die eine Feldklassifizierungsanforderung empfangen worden ist, um zu ermitteln, wann das Betriebssystem Bewertungsmetriken erzeugen und eine Antwort auf die Feldklassifizierungsanforderung bereitstellen kann.
  • Bei Block 250 kann das Verfahren 200 ferner ein Ermitteln, in Reaktion auf das Erkennen des Benutzereingabewertes in dem Texteingabefeld, einer Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten beinhalten.
  • In einigen Beispielen kann sich diese Ähnlichkeitsmetrik in einer Bewertung widerspiegeln, die basierend darauf erzeugt wird, wie nah der Benutzereingabewert an einem oder mehreren der vorgeschlagenen Benutzerwerte, die von dem externen Anbieter bereitgestellt werden, war (z. B. eine Bewertung, die aussagt, wie genau die Übereinstimmung war, wobei die Bewertung die höchste Bewertung aller vorgeschlagenen Benutzerwerte ist, die mit der Texteingabefeld-ID assoziiert sind). Mit anderen Worten kann, wenn ein Benutzereingabewert vollständig übereinstimmend (100 %) mit einem vorgeschlagenen Benutzerwert, der einer ersten Feldklassifizierungsanforderung entspricht, ist (z. B. mit einem vorgeschlagenen E-Mail-Wert) und nur teilweise übereinstimmend (z. B. 40 %) mit einem anderen vorgeschlagenen Benutzerwert, der einer zweiten Feldklassifizierungsanforderung entspricht, ist (z. B. mit einem vorgeschlagenen Benutzernamen), die Ähnlichkeitsmetrik, die der ersten Feldklassifizierungsanforderung entspricht, anschließend von einem externen Anbieter als die bessere Übereinstimmung betrachtet werden. Der externe Anbieter kann daher schlussfolgern, dass das Feld eher ein E-Mail-Feld als ein Benutzernamenfeld ist.
  • Darüber hinaus können die der Berechnung dieser Ähnlichkeitsmetriken zugrundeliegenden Verfahren (z. B. die zugrundeliegenden Vergleichsmodelle oder Algorithmen) variieren (z. B. ein Zeichenkettenvergleichsmodell oder ein Editierdistanzmodell). In einem weiteren Aspekt können diese Verfahren sogar dynamisch sein (z. B. ist das zugrundeliegende Vergleichsmodell zwischen Autofill-Anfragen aktualisierbar) und können womöglich sogar über eine zugehörige Quelle oder eine Drittanbieter-Quelle (z. B. Google Play Store) erhalten werden.
  • Zusätzlich können diese Verfahren auch durch den externen Anbieter auswählbar sein (z. B. kann das Betriebssystem eine Liste von zugrundeliegenden Vergleichsmodellen an den externen Anbieter übermitteln und, basierend auf dem ausgewählten zugrundeliegenden Vergleichsmodell des externen Anbieters, die Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten durch Anwenden des ausgewählten zugrundeliegenden Vergleichsmodells ermitteln). In einem weiteren Aspekt, falls nicht eingestellt, kann von dem Betriebssystem ein Standardverfahren (z. B. ein Algorithmus) basierend auf einem oder mehreren Faktoren verwendet werden (z. B. kann das am häufigsten verwendete Modell eines sein, das auf eine Editierdistanz basiert, und kann damit als das Standardvergleichsverfahren verwendet werden).
  • Bei Block 260 kann das Verfahren 200 ferner ein Übermitteln einer Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter beinhalten, wobei die Antwort die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst. In einigen Beispielen kann diese Übermittlung von Ähnlichkeitsmetriken nicht unterscheidbar sein (z. B. erzeugt das Betriebssystem eine Bewertung für jeden vorgeschlagenen Benutzerwert, der von dem externen Anbieter gesendet wird, und übermittelt diese ohne weitere Analyse zurück an den externen Anbieter). Anders ausgedrückt kann der eine oder können die mehreren vorgeschlagenen Benutzerwerte, die von dem externen Anbieter empfangen werden, in einigen Beispielen, eine Vielzahl von vorgeschlagenen Benutzerwerten umfassen, und das Betriebssystem kann, in Reaktion darauf, Ähnlichkeitsmetriken für jeden vorgeschlagenen Benutzerwert erzeugen und die Ähnlichkeitsmetrik für jeden der Vielzahl von vorgeschlagenen Benutzerwerten übermitteln. In einigen anderen Beispielen kann diese Übermittlung jedoch gezielter und analytischer sein.
  • In einigen Ausführungsformen können der eine oder die mehreren vorgeschlagenen Benutzerwerte, die von dem externen Anbieter aus empfangen werden, beispielsweise eine Vielzahl von vorgeschlagenen Benutzerwerten umfassen, und das Betriebssystem kann, in Reaktion darauf, Ähnlichkeitsmetriken für jeden vorgeschlagenen Benutzerwert erzeugen, jedoch nur die Ähnlichkeitsmetrik für den am besten übereinstimmenden Benutzerwert aus der Vielzahl von vorgeschlagenen Benutzerwerten übermitteln.
  • Weitere beispielhafte Ausführungsformen
  • In noch anderen Beispielen kann die Feldklassifizierungsanforderung mehrere Texteingabefelder angeben. In einigen Beispielen kann der gleiche Satz von vorgeschlagenen Benutzerwerten verwendet werden, um Ähnlichkeitsmetriken für jedes der Texteingabefelder zu erzeugen. Das Betriebssystem kann einen zusätzlichen Benutzereingabewert in dem zusätzlichen Texteingabefeld erkennen. Anschließend, in Reaktion auf das Erkennen des zusätzlichen Benutzereingabewertes in dem zusätzlichen Texteingabefeld, kann das Betriebssystem eine zusätzliche Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des zusätzlichen Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten ermitteln. Zusätzlich kann das Betriebssystem eine zusätzliche Antwort an den externen Anbieter übermitteln, wobei die zusätzliche Antwort die zusätzliche Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst.
  • In anderen Beispielen kann ein anderer Satz von vorgeschlagenen Benutzerwerten verwendet werden, um Ähnlichkeitsmetriken für jedes der Texteingabefelder zu erzeugen. Das Betriebssystem empfängt von dem externen Anbieter, in Reaktion auf die Autofill-Anfrage, einen oder mehrere zusätzliche vorgeschlagene Werte, wobei sich der eine oder die mehreren zusätzlichen vorgeschlagenen Werte von dem einen oder den mehreren vorgeschlagenen Benutzerwerten unterscheiden. In einem weiteren Aspekt kann das Betriebssystem auch einen zusätzlichen Benutzereingabewert in dem zusätzlichen Texteingabefeld erkennen. Anschließend, in Reaktion auf das Erkennen des zusätzlichen Benutzereingabewertes in dem zusätzlichen Texteingabefeld, kann das Betriebssystem eine zusätzliche Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren zusätzlichen vorgeschlagenen Werten basierend auf einem Vergleich des zusätzlichen Benutzereingabewertes mit jedem von dem einen oder den mehreren zusätzlichen vorgeschlagenen Werten ermitteln. In noch einem weiteren Aspekt kann das Betriebssystem auch eine zusätzliche Antwort an den externen Anbieter übermitteln, wobei die zusätzliche Antwort die zusätzliche Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren zusätzlichen vorgeschlagenen Werten umfasst.
  • Zusätzliche erläuternde Figuren und beispielhafte Ausführungsformen
  • 3A, die auf einer Interaktion eines ersten Benutzers mit einer Anwendung auf einem ersten Mobilgerät basiert, zeigt ein Betriebssystem, das eine Autofill-Anfrage an einen externen Anbieter sendet und einen oder mehrere vorgeschlagene Benutzerwerte und eine Feldklassifizierungsanforderung von dem externen Anbieter empfängt, gemäß beispielhaften Ausführungsformen. Insbesondere kann ein Benutzergerät 302 wie z. B. ein Mobiltelefon einen Teil der Anwendung 304 auf dem Benutzergerät anzeigen. Die Anwendung 304 kann außerdem auf der UI des Benutzergeräts 302 angezeigte Texteingabefelder beinhalten, die einen gängigen Autofill-Deskriptor 306 (z. B. „E-Mail“) enthalten oder damit assoziiert sind. In diesem Beispiel kann das Betriebssystem, sobald das Betriebssystem des Benutzergeräts 302 den gängigen Autofill-Deskriptor 306 erkennt, eine automatische Autofill-Anfrage 308 an einen externen Anbieter 310 senden.
  • Zusätzlich kann in diesem Beispiel, wie zuvor beschrieben, diese Autofill-Anfrage 308 in Reaktion darauf, dass ein Texteingabefeld der Anwendung einen gewissen Fokus aufweist (hier weist das „E-Mail“-Texteingabefeld eine vertikale Linie auf, die anzeigt, dass Text über die angezeigte Tastatur in das Feld eingegeben werden kann) und/oder in Reaktion auf die ohne derartigen Fokus (hier weist das „Passwort“-Texteingabefeld keine solche vertikale Linie auf) erfolgen.
  • In beiden dieser Szenarien ermittelt das Betriebssystem, bevor es eine solche Autofill-Anfrage sendet, jedoch eine Teilmenge der auf der UI angezeigten Inhalte, die benutzerspezifische Informationen ausschließt. Sobald diese Teilmenge durch das Betriebssystem ermittelt ist und ein Ereignis den Betrieb zur Erzeugung und Übermittlung einer Autofill-Anfrage ausgelöst hat, erzeugt und sendet das Betriebssystem diese Autofill-Anfrage (die hier als Autofill-Anfrage 308 dargestellt ist und die Teilmenge der auf der UI angezeigten Inhalte umfasst) an den externen Anbieter.
  • Sobald der externe Anbieter die Autofill-Anfrage empfängt, kann er dem Betriebssystem wiederum zumindest zwei Informationsteile bereitstellen: (1) vorgeschlagene Benutzerdaten 312 (einschließlich vorgeschlagener Benutzerwerte „felipe@x.com“ und „LemeF“); und (2) eine Feldklassifizierungsanforderung 314 (hier als „autofillId1“ dargestellt).
  • Hinsichtlich des ersten Punkts können ein oder mehrere vorgeschlagene Benutzerwerte durch den externen Anbieter als Daten bereitgestellt werden, die für die Anwendung, für die das Betriebssystem Autofill-Anfrage 308 gesendet hat, zum automatischen Ausfüllen relevant sein können. In diesem Beispiel sind die zwei vorgeschlagenen Benutzerwerte erneut als „felipe@x.com“ und „LemeF“ dargestellt.
  • Im Rahmen dieser Ausführungsform können zuvor eingegebene vorgeschlagene Benutzerdaten 312 durch ein UserData-Objekt definiert sein und eine ID und ein Paar von map of field_id -> list_of_values beinhalten, wobei ID ganze Benutzerdaten identifiziert (sodass sie zur Versionierung verwendet werden kann), field_id einen Feldtyp darstellt und list_of_ values eine Liste von mit diesem Feld assoziierten Benutzereingabewerten ist. In diesem Beispiel wird field id „E-Mail“ dem Wert „felipe@x.com“ zugeordnet und field_id „Benutzername“ „LemeF“ zugeordnet.
  • Auch im Rahmen dieser Ausführungsform können sowohl id als auch field_id von dem externen Anbieter eingestellte Zufallswerte sein und vom Betriebssystem als schwarze Boxen behandelt werden, wobei sie jedoch auch aussagekräftige Werte enthalten können, die bei einem Debugging der Prozesse helfen. Das Betriebssystem kann, wenn es solche Werte enthält, diesen Prozess beispielsweise über den nachfolgenden exemplarischen Code analysieren:
       autofillManager.setUserData(new UserData.Builder(„v1“)
              .add(„email“, „felipe@x.com“)
              .add(„usemame“, „LemeF“)
              .build());
  • Ferner kann es sich bei den UserData, in einigen Ausführungsformen, um ein zwischengespeichertes Objekt handeln, das mit dem externen Anbieter assoziiert ist, sodass es in mehreren Anforderungen verwendet werden kann. In einem weiteren Aspekt, weil es einen oder mehrere Gründe geben kann, sich dagegen zu entscheiden (z. B. aus Sicherheitsgründen), können die UserData womöglich nicht persistent (d. h. temporär gespeichert) sein, sondern stattdessen beim Neustarten des Betriebssystems oder, wenn sich der externe Anbieter für den aktuellen Benutzer geändert hat, oder wenn der externe Anbieter die UserData zurücksetzt, gelöscht werden. In diesem Zusammenhang kann der externe Anbieter überprüfen, ob UserData eingestellt ist, bevor er mit weiteren Aspekten der Prozesse zum automatischen Ausfüllen fortfährt, wobei ein Beispiel dafür im Folgenden dargestellt ist:
  •        if (autofillManager.getUserDataId() == null) { 
    
                  autofillManager. setU serData(...)
           }
  • In noch anderen Ausführungsformen kann der externe Anbieter auch die ID zur Versionierung verwenden, wovon ein Beispiel im Folgenden dargestellt ist:
  •        if (!myCurrentId.equals(autofillManager.getUserDataId())) {
                  autofillManager. setUserData(...) 
           }
  • Im Hinblick auf den zweiten Punkt kann eine Feldklassifizierungsanforderung 314 auch von dem externen Anbieter bereitgestellt werden, um das automatische Ausfüllen der Anwendung, für die das Betriebssystem Autofill-Anfragen 308 gesendet hat, für denselben oder unterschiedliche Benutzer weiter zu erleichtern. In diesem Beispiel ist die Feldklassifizierungsanforderungen als „autofillId1“ dargestellt.
  • Im Rahmen dieser Ausführungsform kann der externe Anbieter eine Feldklassifizierung explizit in einem FillResponse-Objekt anfordern, welches angibt, in welchen Feldern dieses Objekt verwendet werden soll, wobei ein Beispiel hierfür im Folgenden dargestellt ist:
  •        fillcallback.onSuccess(new FillResponse.Builder()
                  .setFieldClassificationIds(autofillId1)
                  .build));
  • In einem weiteren Aspekt kann das Betriebssystem, wenn der Autofill-Kontext übergeben ist, verifizieren, ob einer der zwei vorgeschlagenen Benutzerwerte, die durch den externen Anbieter bereitgestellt werden (hier dargestellt als „felipe@x.com“ und „LemeF“), für die angezeigte Feldklassifizierungsanforderung einem der Werte entsprechen, die der Benutzer manuell eingibt (hier als „autofillId1“ dargestellt). Da es jedoch erneut sein kann, dass das Betriebssystem eine Überlastung durch jedwede Brute-Force-Versuche seitens des externen Anbieters zum Identifizieren der besten Möglichkeiten zum Vorschlagen von Autofill-Werten vermeiden will, kann das Betriebssystem übermäßige Mengen an vorgeschlagenen Benutzerwerten oder Feldklassifizierungsanforderungen, die von dem externen Anbieter gesendet werden, durch eine Reihe von Taktiken beschränken, wie zuvor ausführlicher dargestellt.
  • Mit Blick auf 3B ist in 3B eine manuelle Eingabe, durch einen ersten Benutzer, von Daten in ein Texteingabefeld der Anwendung auf dem ersten Mobilgerät dargestellt. Zusätzlich ist in 3B das daraus resultierende Erzeugen und Senden einer oder mehrerer Ähnlichkeitsmetriken an den externen Anbieter durch das Betriebssystem basierend auf den vom Benutzer eingegebenen Daten dargestellt.
  • Insbesondere zeigt 3B, dass der Benutzer manuell einen Benutzereingabewert 316 (hier „felipe@x.com“) in das erste Texteingabefeld 306 (hier das Texteingabefeld „E-Mail“) eingeben kann. In Reaktion darauf kann das Betriebssystem den Benutzereingabewert 316 in dem Texteingabefeld 306 erkennen und mit dem Ermitteln einer Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten 312 basierend auf einem Vergleich dieses Benutzereingabewertes 316 mit jedem von dem einen oder den mehreren Werten beginnen. In diesem Zusammenhang kann das Betriebssystem vom Benutzer eingegebene Daten ohne Speichern der vom Benutzer eingegebenen Daten auf dem Benutzergerät analysieren, was dem externen Anbieter 310 wiederum bei seinen zukünftigen Autofill-Versuchen helfen kann (sowohl im Kontext der Anwendung 304, die auf dem Benutzergerät 302, als auch auf einem anderen Benutzergerät ausgeführt wird).
  • Insbesondere kann der externe Anbieter, im Rahmen dieser Ausführungsform, die Ergebnisse dieses Prozesses unter Nutzung eines vorhandenen FillEventHistory-Mechanismus verifizieren. FillEventHistory ist eine API, die es dem externen Anbieter ermöglicht, das Betriebssystem über Ereignisse abzufragen, die sich in einer früheren Autofill-Sitzung ereignet haben. Ereignisse vom Typ TYPE_CONTEXT_COMMITTED stellen Ereignisse dar, bei denen der Benutzer einen Bildschirm eingereicht (übergeben) hat. Wenn der Dienstanbieter Feldklassifizierungen auf diesem Bildschirm angefordert hat und die Anforderung angenommen wurde, stehen die Ergebnisse dem FillHistoryEvent-Objekt zur Verfügung. Der externe Anbieter kann Ergebnisse auch durch Aufrufen von getFieldsClassification() verifizieren, was eine Map von FieldClassification-Objekten, die durch Kennungen wie z. B. „autofillId1“ verschlüsselt sind. Diese Kennungen (z. B. sequenzielle Kennungen) können von einem Betriebssystem bereitgestellt werden, um Ansichten zu identifizieren, und der externe Anbieter kann die Kennungen verwenden, um dem Betriebssystem mitzuteilen, für welche Ansichten der externe Anbieter eine Feldklassifizierung anfordert.
  • In einem weiteren Aspekt kann das FieldClassification-Objekt auch Match-Objekte enthalten, die darstellen können, welches Texteingabefeld (identifiziert durch seine fieldId) mit der automatisch ausgefüllten ID übereinstimmt, die wiederum eine Bewertung enthalten kann, die mitteilt, wie genau die Übereinstimmung war (z. B. ist die Bewertung die höchste Bewertung aller mit der Texteingabefeld-ID assoziierten Benutzerwerte). Beispielsweise kann, wenn der Benutzer in dem Feld „autofillId1“ „felipe@x.com“ eingegeben hat, das von dem Betriebssystem zurückgegebene Ergebnis in dem folgenden Beispiel dargestellt werden:
  •        Map<AutofillId, FieldClassification> results = fillEvent.getFieldsClassification();
           for (auto entry : results.entrySet() {
                  AutofillId id = entry.getKey();
                  FieldClassification fc = entry.getValue();
                  System.out.println(id + „:“ + fc.getMatches());
           } 
           // Output:
           // autofillId1: „email“ -> 1.0 (100.0000%)
  • Anders ausgedrückt, war die Bewertung des „autofillId1“-Felds in diesem Beispiel eine 100%-Übereinstimmung mit dem Benutzerwert, der field_id „E-Mail“ entspricht (d. h. der Benutzereingabewert 316 „felipe@x.com“, der durch den Benutzer eingegeben wurde, stimmte vollständig mit dem „felipe@x.com“ überein, das in den vorgeschlagenen Benutzerdaten 312 und der Feldklassifizierungsanforderung 314 dargestellt ist).
  • In einem weiteren Aspekt kann, obwohl das Verfahren und der Algorithmus, die zum Definieren der Übereinstimmungsbewertung verwendet werden, durch das UserData.Builder.setFieldClassificationAlgorithmo-Verfahren definiert werden können, welches den Namen des Algorithmus und optionale Argumente nutzt, auch ein Standard-Algorithmus verwendet werden, insbesondere, wenn durch den externen Anbieter nicht spezifiziert.
  • In noch einem weiteren Aspekt kann das Betriebssystem eine Antwort auf die Feldklassifizierungsanforderung 314 an den externen Anbieter 310 erzeugen und übermitteln, wobei die Antwort die Ähnlichkeitsmetrik 318 umfasst, und wobei der externe Anbieter 310 die Ähnlichkeitsmetrik 318 verwenden kann, um ein zukünftiges automatisches Ausfüllen für die Anwendung zu verbessern.
  • 4A zeigt, ähnlich der 3A, basierend auf einer Interaktion eines zweiten Benutzers mit der Anwendung auf einem zweiten Mobilgerät, ein Betriebssystem, das eine Autofill-Anfrage an den externen Anbieter sendet und einen oder mehrere vorgeschlagene Benutzerwerte und eine Feldklassifizierungsanforderung von dem externen Anbieter empfängt, gemäß beispielhaften Ausführungsformen. Insbesondere kann ein Benutzergerät 402 (wie etwa das Benutzergerät 302) einen Teil einer Anwendung 304 auf dem Benutzergerät 402 anzeigen. Die Anwendung 304 kann ebenfalls auf der UI des Benutzergeräts 402 angezeigte Texteingabefelder beinhalten, die gängige Autofill-Deskriptoren 306 (z. B. „E-Mail“) enthalten oder damit assoziiert sind.
  • Das Betriebssystem in 4A erzeugt und übermittelt, wie auch in 3A, diese Autofill-Anfrage (hier als Autofill-Anfrage 408 und die Teilmenge der auf der UI angezeigten Inhalte umfassend dargestellt) an den externen Anbieter. Ebenso wie 3A können dem Betriebssystem in 4A mindestens zwei Informationsteilen von dem externen Anbieter bereitgestellt werden: (1) vorgeschlagene Benutzerdaten 412 (hier dargestellt als „jason@y.com“ und „LongJ“); und (2) eine Feldklassifizierungsanforderung 414 (hier dargestellt als „autofillIdd1“).
  • Mit Blick auf 4B ist eine manuelle Eingabe, durch einen zweiten Benutzer, von Daten in ein Texteingabefeld der Anwendung auf dem ersten Mobilgerät dargestellt. 4B zeigt, wie auch 3B, dass der Benutzer manuell einen Benutzereingabewert 416 (hier „jason@x.com“) in das erste Texteingabefeld 306 (hier das Texteingabefeld „E-Mail“) eingeben kann. In Reaktion auf ein Ermitteln des Benutzereingabewertes 416 in dem Texteingabefeld 306 kann das Betriebssystem, wie auch in 3B, mit dem Ermitteln einer Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren Werten vorgeschlagener Benutzerdaten 412 basierend auf einem Vergleich dieses Benutzereingabewertes 416 mit jedem von dem einen oder den mehreren Werten beginnen.
  • In diesem Zusammenhang kann das Betriebssystem erneut vom Benutzer eingegebene Daten ohne Speichern der vom Benutzer eingegebenen Daten auf dem Benutzergerät analysieren, was dem externen Anbieter 310 wiederum bei seinen zukünftigen Autofill-Versuchen helfen kann (sowohl im Kontext der Anwendung 304, die auf dem Benutzergerät 302, als auch auf Benutzergerät 402 oder auf einem anderen Benutzergerät ausgeführt wird).
  • Anders als in 3B würde die Bewertung des „autofillId1“-Felds im Kontext der vorgeschlagenen Benutzerdaten 412 und des Benutzereingabewertes 416 jedoch eine 90%-Bewertung erzeugen (d. h. das vom Benutzer eingegebene „jason@x.com“, 416, stimmt nur zu 90% mit dem „jason@y.com“ überein, das in den vom Benutzer vorgeschlagenen Daten 412 und der Feldklassifizierungsanforderung 414 dargestellt ist).
  • Zusätzlich kann das Betriebssystem in 4B, wie auch in 3B, eine Antwort auf die Feldklassifizierungsanforderung 414 an den externen Anbieter 310 erzeugen und übermitteln, wobei die Antwort die Ähnlichkeitsmetrik 418 umfasst, und wobei der externe Anbieter 310 zumindest die Ähnlichkeitsmetriken 318 und 418 verwenden kann, um Autofill-Dienste für die Anwendung 304 besser bereitstellen zu können. Auf diese Weise nutzen beispielhafte Ausführungsformen Crowdsourcing mit Benutzereingabedaten von mehreren Benutzern zum schnellen Trainieren eines externen Anbieters hinsichtlich eines Verstehens der Felder einer Anwendung, ohne dass dabei jedwede sensiblen Benutzerinformationen ohne Zustimmung des Benutzers kompromittiert werden. In diesem Zusammenhang muss der externe Anbieter, damit der externe Anbieter über vorgeschlagene Benutzerwerte verfügt, die er dem Benutzer vorschlagen kann, ferner zuvor die Zustimmung des Benutzers erhalten haben. Dementsprechend zielen die vorliegenden Ausführungsformen nicht darauf ab, dass das Betriebssystem einen unbekannten oder zufälligen externen Anbieter ohne Zustimmung des Benutzers unterstützt.
  • 5 zeigt, ähnlich der 3A und 4A, basierend auf einer Interaktion eines dritten Benutzers mit der Anwendung auf einem dritten Mobilgerät, ein Betriebssystem, das eine Autofill-Anfrage an den externen Anbieter sendet, gemäß beispielhaften Ausführungsformen. Insbesondere kann ein Benutzergerät 502 (wie etwa das Benutzergerät 302 und 402) einen Teil einer Anwendung 304 auf dem Benutzergerät 502 anzeigen. Gleichermaßen kann die Anwendung 304 ebenfalls auf der UI des Benutzergeräts 502 angezeigte Texteingabefelder beinhalten, die gängige Autofill-Deskriptoren 306 (z. B. „E-Mail“) enthalten oder damit assoziiert sind.
  • Mit Blick auf 5 kann das Betriebssystem erneut eine Autofill-Anfrage erzeugen (hier als Autofill-Anfrage 508 und die Teilmenge der auf der UI angezeigten Inhalte umfassend dargestellt) und an den externen Anbieter 310 übermitteln. Anders als bei den beispielhaften Ausführungsformen in 3A und 4A werden dem Betriebssystem in der beispielhaften Ausführungsform aus 5 jedoch ein oder mehrere vorgeschlagene Benutzerwerte oder eine Feldklassifizierungsanforderung jedoch nicht bereitgestellt, sondern ihm wird stattdessen ein Autofill-Wert (hier dargestellt als „jim@y.com“ für das Feld „E-Mail“) bereitgestellt, den es dann automatisch in das Texteingabefeld 306 eintragen kann.
  • Da der externe Anbieter 310 in dieser beispielhaften Ausführungsform zumindest den Vorteil von zwei Ähnlichkeitsmetriken (318 und 418) von Betriebssystemen erhalten haben kann, kann er im Einzelnen eine Konfidenz zum Empfehlen eines Autofill-Werts 510 aufgebaut haben, der sowohl einen spezifischen vorgeschlagenen Benutzerwert (hier „jim@y.com“) als auch ein spezifisches Texteingabefeld, in das der Wert eingegeben werden sollte (hier das Feld „E-Mail“), enthält. Dies hat zur Folge, dass das Betriebssystem des Benutzergeräts 502 in dieser Ausführungsform die Bemühungen und die Analyse der Betriebssysteme der Benutzergeräte 302 und 402 sowie den externen Anbieter 310 sicher eingesetzt hat, ohne dabei die spezifischen Benutzerinhalte des Benutzergeräts 302, 402 oder 502 zu kompromittieren.
  • In einem weiteren Aspekt kann das Betriebssystem, in 5, auch eine Bestätigungsnachricht 512 anzeigen, um den Benutzer darüber zu unterrichten, dass die Texteingabefelder der auf der UI angezeigten Anwendung automatisch ausgefüllt wurden. In einem weiteren Beispiel kann das Betriebssystem auch eine Eingabeaufforderung zum Rückgängigmachen 514 aufweisen, um den Benutzer darüber zu unterrichten, dass die Daten aus den Texteingabefeldern der Anwendung gelöscht werden könnten, die während des Autofill-Prozesses durch das Betriebssystem ausgefüllt wurden.
  • Zusätzliche Bedenken und vorgeschlagene Lösungen
  • In einigen weiteren Aspekten kann, da die Belastung des Durchführens der Autofill-Prozesse erheblich sein kann, jedoch die Gesamtleistung des Betriebssystems beeinflusst, womöglich sogar negativ, werden. In einem der zuvor erläuterten Beispiele kann die Feldklassifizierungsfunktion einen negativen Einfluss auf die Gesundheit und Leistung des Benutzergeräts aus einem oder mehreren der folgenden Gründen haben: (1) Wenn der externe Anbieter eine Aktivität nicht automatisch ausfüllen kann und eine Nullantwort zurückgibt, kann das Betriebssystem ein Autofill für diese Aktivität vorübergehend deaktivieren; wenn der externe Anbieter die Feldklassifizierung einstellt, anstatt Null auszugeben, kann die Sitzung offengehalten werden; (2) der Betrieb kann dazu führen, dass die Eingabewerte des Benutzers im Speicher verbleiben; (2) das Betriebssystem kann die Feldklassifizierungsübereinstimmungen bei Bestätigung berechnen und kann die Übereinstimmungen anschließend an den externen Anbieter senden, was wiederum eine O(N x M)-Operation (und Datenstruktur) sein könnte, wobei N die Anzahl an Benutzereingabewerteinträgen ist und M die Anzahl an klassifizierbaren Feldern ist.
  • Um die Gesamtleistungsauswirkungen auf das Betriebssystem abzuschwächen, können von dem Betriebssystem während des Autofill-Prozesses eine oder mehrere der folgenden abschwächenden Aktionen unternommen werden: (1) Begrenzen der Gesamtanzahl an vorgeschlagenen Benutzerwerten basierend auf einer vorbestimmten maximalen Gesamtanzahl von vorgeschlagenen Benutzerwerten (z. B. würde die Schnittstelle nicht mehr als zehn vorgeschlagene Benutzerwerte von einem beliebigen externen Anbieter zulassen); (2) Begrenzen der Anzahl an vorgeschlagenen Benutzerwerten für jedes Texteingabefeld auf eine vorbestimmte maximale Anzahl an vorgeschlagenen Benutzerwerten je Feld (z. B. würde die Schnittstelle nicht mehr als drei vorgeschlagene Benutzerwerte je Texteingabefeld zulassen); (3) Begrenzen der Charakteristika der vorgeschlagenen Benutzerwerte selbst basierend auf einer oder mehreren Eigenschaften oder Charakteristika des vorgeschlagenen Benutzerwertes (z. B. eine vorbestimmte Mindestanzahl an Zeichen, jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten auf eine erste vorbestimmte Mindestanzahl an Zeichen, wenn der vorgeschlagene Benutzerwert nur numerische Zeichen beinhaltet, und auf eine zweite vorbestimmte Mindestanzahl an Zeichen, wenn der vorgeschlagene Benutzerwert zumindest ein nicht numerisches Zeichen beinhaltet); (4) Begrenzen der Gesamtanzahl an Feldklassifizierungsanfragen basierend auf einer vorbestimmten maximalen Gesamtanzahl an Feldklassifizierungsanforderungen (z. B. würde die Schnittstelle nicht mehr als zehn Feldklassifizierungsanforderungen von einem beliebigen externen Anbieter zulassen); Begrenzen der Häufigkeit, mit der der externe Anbieter Feldklassifizierungsanforderungen bereitstellt (die Schnittstelle würde nicht mehr als zehn Feldklassifizierungsanforderungen pro Stunde von einem beliebigen externen Anbieter zulassen); (5) Begrenzen der Anzahl an Feldklassifizierungsanforderungen basierend auf der Anzahl an Benutzereingabefeldern (z. B. würde die Schnittstelle nicht mehr als zehn Feldklassifizierungsanforderungen zulassen, da es nur zwei Benutzereingabefelder gibt); (6) Begrenzen der Anzahl an Feldklassifizierungsanforderungen für jedes Texteingabefeld auf eine vorbestimmte maximale Anzahl an Feldklassifizierungsanforderungen je Feld (z. B. würde die Schnittstelle nicht mehr als drei Feldklassifizierungsanforderungen je Texteingabefeld zulassen); (7) Optimieren des Workflows, wenn die Antwort lediglich Feldklassifizierungen aufweist (z. B. das Nullantwort-Szenario, das vorstehend beschrieben ist).
  • In einem weiteren Aspekt kann der externe Anbieter in diesen Szenarien durch Kommunizieren mit oder über einen Host eines anderen oder zugehörigen Dienstes auch die zulässigen Maximalwerte prüfen (z. B. UserData.getMaxFieldsSize(), UserData.getMaxUserDataSize(), UserData.getMaxFieldClassificationIdsSize() und UserData.getMaxValueLength()). Diese Werte können auch durch Benutzereinstellungen, die durch einen Remote-Server spontan angepasst wurden oder mittels anderer Verfahren eingestellt werden, definiert werden. In ähnlicher Weise kann der externe Anbieter auch AutofillManager.isFieldClassificationEnabled() zur Überprüfung, ob die Funktion überhaupt verfügbar ist, aufrufen (z. B. könnte sie durch das Betriebssystem aufgrund einer Geschwindigkeitsbegrenzungsverletzung usw. deaktiviert worden sein).
  • In jedem dieser Szenarien ist es jedoch möglich, dass der externe Anbieter die Erwartungen des Betriebssystems oder die Einschränkungen der Schnittstelle nicht einhält, und das Betriebssystem kann, im Interesse seines eigenen Schutzes, entsprechend reagieren. Beispielsweise kann das Betriebssystem eine vorbestimmte Zuweisung seiner Ressourcen aufweisen, die den hierin beschriebenen Prozessen, oder einem beliebigen Teil davon, gewidmet sind (z. B. kann das Betriebssystem eine vorbestimmte Systemressourcenzuweisung von 5 % zum Empfangen vorgeschlagener Benutzerwerte und Feldklassifizierungsanforderungen von externen Anbietern aufweisen). In einigen Fällen, wenn das Betriebssystem ermittelt, dass diese vorbestimmte Ressourcenzuweisung überschritten worden ist, kann es ferner Abhilfemaßnahmen ergreifen (z. B. kann das Betriebssystem, in Reaktion auf das Ermitteln, dass seine vorbestimmte Ressourcenzuweisung von 5 % überschritten wurde, ein Empfangen weiterer vorgeschlagener Benutzerwerte oder Feldklassifizierungen von den externen Anbietern ablehnen).
  • In noch einem weiteren Aspekt kann Sicherheit aufgrund der Analyse und Bewertung von Benutzerdaten im Prozess des automatischen Ausfüllens durch das Betriebssystem ein Anliegen des Benutzers sein. Obwohl das Betriebssystem dem externen Anbieter die durch den Benutzer eingegebenen Werte zwar nicht direkt mitteilen kann, kann der externe Anbieter, durch die Verwendung anhaltender Brute-Force, versuchen, diese Werte herauszufinden.
  • In einem Beispiel könnte ein externer Anbieter eine Liste von gängigen Pin-Codes (z.B. Pin1 = {1111}, Pin2 = {0000}, Pin3 = {1234} usw.) und vorgeschlagene Benutzerwerte senden und dann eine Bestätigung erhalten, wenn einer dieser Werte zu 100 % übereinstimmt. Darüber hinaus kann der externe Anbieter in diesem Zusammenhang, wenn der externe Anbieter diesen Prozess für viele Benutzer (z. B. tausende von Benutzern) iterativ durchführen würde, letztendlich Übereinstimmungen finden. Um jedwede Gefahr dieses „Brute-Force“-Angriffs zu mindern, kann das Betriebssystem in einigen Ausführungsformen eine oder mehrere der zuvor detaillierten Schutzmaßnahmen vornehmen.
  • In einem weiteren Aspekt kann das Betriebssystem, in einigen Ausführungsformen, diese Bedenken auch in einer Reihe von anderen Weisen (z. B. durch Begrenzen der Anzahl an Feldern, die zu UserData hinzugefügt werden können (mittels UserData.getMaxFieldSize()), Einstellen der Mindestanzahl an Zeichen (mittels UserData.getMinValueLength()), usw.) mit verschiedenem Maß an Genauigkeit (z. B. Begrenzen dieser Werte jeweils auf 10 und 3) abschwächen. Schließlich, da die zuvor beschriebenen UserData PII beinhalten können, können sie durch eine Reihe von zusätzlichen Maßnahmen zusätzlich geschützt werden (z. B. können sie lediglich in einem Speicher aufbewahrt werden (d. h. sie verbleiben nicht auf dem Laufwerk, wenn das Gerät neugestartet wird), ihre Werte können nicht festgehalten werden (bei toString(), dump(), log() usw.)).
  • Computergerät
  • Unter nun folgender Bezugnahme auf 6 ist 6 ein Funktionsblockdiagramm eines Computergeräts 600 gemäß beispielhaften Ausführungsformen. Insbesondere kann das in 6 dargestellte Computergerät 600 dafür konfiguriert sein, wie zuvor beschrieben, zumindest eine Funktion des Servergeräts 108 und/oder 110 und/oder des externen Anbieters 112 und/oder 114, eines beliebigen der Benutzergeräte 104a-104e, des Verfahrens 200, des Benutzergeräts 302, des Benutzergeräts 402 und/oder des Benutzergeräts 502 durchzuführen.
  • Das Computergerät 600 kann ein Benutzerschnittstellenmodul 601, ein Netzwerkkommunikations-Schnittstellenmodul 602, einen oder mehrere Prozessoren 603, einen Datenspeicher 604 und einen oder mehrere Sensoren 620 beinhalten, die alle über einen Systembus, ein Netzwerk oder einen sonstigen Verbindungsmechanismus 605 miteinander verbunden sein können.
  • Das Benutzerschnittstellenmodul 601 kann betriebsbereit sein, um Daten an externe Benutzereingabe/-ausgabegeräte zu senden und/oder von diesen zu empfangen. Beispielsweise kann das Benutzerschnittstellenmodul 601 konfiguriert sein, um Daten an Benutzereingabegeräte, wie z. B. eine Tastatur, ein Tastenfeld, ein Touchscreen, eine präsenzempfindliche Anzeige, eine Computermaus, ein Trackball, ein Joystick, eine Kamera, ein Spracherkennungsmodul und/oder sonstige ähnliche Geräte zu senden und/oder von diesen zu empfangen. Das Benutzerschnittstellenmodul 601 kann auch dafür konfiguriert sein, Ausgaben für Benutzeranzeigegeräte, wie z. B. eine oder mehrere Kathodenstrahlröhren (CRT), Flüssigkristallanzeigen, Leuchtdiodenanzeigen (LEDs), Anzeigen mit digitaler Lichtverarbeitungs-(DLP)-Technologie, Drucker, Glühbirnen und/oder ähnliche Geräte, die entweder schon bekannt sind oder später entwickelt werden, bereitzustellen. Das Benutzerschnittstellenmodul 601 kann auch dafür konfiguriert sein, hörbare Ausgabe(n) zu erzeugen, beispielsweise als Lautsprecher, Lautsprecherbuchse, Audioausgabeanschluss, Audioausgabegerät, Kopfhörer und/oder ähnliche Geräte. Das Benutzerschnittstellenmodul 601 kann ferner mit einer oder mehreren haptischen Geräten ausgebildet sein, die haptische Ausgabe(n), wie z. B. Vibrationen und/oder andere durch Berührung und/oder physischen Kontakt mit dem Computergerät 600 detektierbare Ausgaben, erzeugen können. In einigen Ausführungsformen kann das Benutzerschnittstellenmodul 601 verwendet werden, um eine GUI zum Verwenden des Computergeräts 600 bereitzustellen.
  • Das Netzwerkkommunikations-Schnittstellenmodul 602 kann eine oder mehrere drahtlose Schnittstellen 607 und/oder eine oder mehrere drahtgebundene Schnittstellen 608 beinhalten, die konfigurierbar sind, um über ein Netzwerk zu kommunizieren. Die drahtlosen Schnittstellen 607 können einen oder mehrere drahtlose Sender, Empfänger und/oder Sendeempfänger, wie z. B. einen Bluetooth-Sendeempfänger, einen Zigbee-Sendeempfänger, einen Wi-Fi-Sendeempfänger, einen WiMAX-Sendeempfänger und/oder eine andere ähnliche Art von drahtlosem Sendeempfänger, der konfigurierbar ist, um über ein drahtloses Netzwerk zu kommunizieren, beinhalten. Die drahtgebundenen Schnittstellen 608 können einen oder mehrere drahtgebundene Sender, Empfänger und/oder Sendeempfänger, wie z. B. einen Ethernet-Sendeempfänger, einen Universal-Serial-Bus-(USB)-Sendeempfänger oder einen ähnlichen Sendeempfänger, der konfigurierbar ist, um über einen Twisted-Pair-Draht, ein Koaxialkabel, einen Lichtwellenleiter oder eine ähnliche physische Verbindung zu einem drahtgebundenen Netzwerk zu kommunizieren.
  • In einigen Ausführungsformen kann das Netzwerkkommunikations-Schnittstellenmodul 602 konfiguriert sein, zuverlässige, gesicherte und/oder authentifizierte Kommunikationen bereitzustellen. Für jede Kommunikation können Informationen bereitgestellt werden, um zuverlässige Kommunikationen (z. B. garantierte Nachrichtenübermittlung) zu gewährleisten, möglicherweise als Teil einer Nachrichten-Kopfzeile und/oder -Fußzeile (z. B. Paket/Nachrichten-Sequenzierungsinformationen, Kapselungs-Kopfzeile(n) und/oder -Fußzeile(n), Größe/Zeit-Informationen und Übermittlungsüberprüfungsinformationen, wie z. B. CRC und/oder Parity-Check-Werte). Kommunikationen können sicher gemacht werden (z. B. codiert oder verschlüsselt werden) und/oder entschlüsselt/decodiert werden, unter Verwendung von einem oder mehreren kryptographischen Protokollen und/oder Algorithmen, wie z. B., aber nicht beschränkt darauf, DES, AES, RSA, Diffie-Hellman und/oder DSA. Weitere kryptographische Protokolle und/oder Algorithmen können ebenso oder zusätzlich zu den hier aufgelisteten verwendet werden, um die Kommunikationen sicher zu machen (und anschließend zu entschlüsseln/decodieren).
  • Ein oder mehrere Prozessoren 603 können einen oder mehrere Universalprozessoren und/oder einen oder mehrere Spezialprozessoren (z. B. digitale Signalprozessoren, Grafikverarbeitungseinheiten, anwendungsspezifische integrierte Schaltungen usw.) beinhalten. Der eine oder die mehreren Prozessoren 603 können dafür konfiguriert sein, computerlesbare Programmanweisungen 606, die in dem Datenspeicher 604 enthalten sind, und/oder andere Anweisungen wie hierin beschrieben auszuführen.
  • Der Datenspeicher 604 kann ein oder mehrere computerlesbare Speichermedien beinhalten, die von zumindest einem von dem einen oder den mehreren Prozessoren 603 gelesen werden können und/oder einen Zugriff durch diesen ermöglichen. Das eine oder die mehreren computerlesbaren Speichermedien können flüchtige und/oder nicht-flüchtige Speicherkomponenten, wie z. B. optische, magnetische, organische oder sonstige Speicher oder Plattenspeicher beinhalten, die ganz oder teilweise in zumindest einem von dem einen oder den mehreren Prozessoren 603 integriert sein können. In einigen Ausführungsformen kann der Datenspeicher 604 unter Verwendung eines einzelnen physischen Geräts (z. B. einem optischen, magnetischen, organischen oder sonstigen Speicher oder einer Plattenspeichereinheit) implementiert sein, während in anderen Ausführungsformen der Datenspeicher 604 unter Nutzung von zwei oder mehr physischen Geräten implementiert sein kann.
  • Der Datenspeicher 604 kann computerlesbare Programmanweisungen 606 und möglicherweise zusätzliche Daten beinhalten. In einigen Ausführungsformen kann der Datenspeicher 604 zusätzlich Speicher beinhalten, der erforderlich ist, um zumindest einen Teil der hierin beschriebenen Verfahren, Szenarien und Techniken und/oder zumindest einen Teil der Funktionen der hierin beschriebenen Geräte und Netzwerke durchzuführen.
  • In einigen Ausführungsformen kann das Computergerät 600 einen oder mehrere Sensoren 620 beinhalten. Der oder die Sensoren 620 können dafür konfiguriert sein, Bedingungen in einer Umgebung des Computergeräts 600 zu messen und Daten über diese Umgebung bereitzustellen. Beispielsweise können der oder die Sensoren 620 eines oder mehrere von Folgendem beinhalten: (i) einen Identifikationssensor zur Identifizierung anderer Objekte und/oder Geräte, wie z. B., aber nicht beschränkt auf, einen RFID-Leser, einen Näherungssensor, einen eindimensionalen Strichcode-Leser, einen zweidimensionalen Strichcode-Leser (z. B. Quick-Response(QR)-Code-Leser) und eine Laser-Verfolgungseinrichtung, wobei der oder die Identifikationssensoren dafür konfiguriert sein können, Kennungen, wie RFID-Tags, Strichcodes, QR-Codes einzulesen, und/oder andere Geräte und/oder Objekte, die konfiguriert sind, zumindest identifizierende Informationen einzulesen und bereitzustellen; (ii) Sensoren zur Messung von Standorten und/oder Bewegungen des Computergeräts 600, wie z. B., aber nicht beschränkt auf, einen Neigungssensor, ein Gyroskop, einen Beschleunigungssensor, einen Doppler-Sensor, ein Global-Positioning-System-(GPS)-Gerät, einen Sonarsensor, ein Radargerät, einen Laserverschiebungssensor und einen Kompass; (iii) einen Umgebungssensor zum Erhalten von Daten, die eine Umgebung des Computergeräts 600 angeben, wie z. B., aber nicht beschränkt auf, einen Infrarotsensor, einen optischen Sensor, einen Lichtsensor, eine Kamera, einen Biosensor, einen biometrischen Sensor, einen kapazitiven Sensor, einen Berührungssensor, einen Temperatursensor, einen drahtlosen Sensor, einen Funksensor, einen Bewegungssensor, ein Mikrofon, einen Schallsensor, einen Ultraschallsensor und/oder einen Rauchmelder; und (iv) einen Kraftsensor zur Messung eines oder mehrerer Kräfte (z. B. Trägheitskräfte und g-Kräfte), die um das Computergerät 600 herum wirken, wie z. B., aber nicht beschränkt auf, einen oder mehrere Sensoren, die Folgendes messen: Kräfte in einer oder in mehreren Dimensionen, Drehmoment, Bodenkraft, Reibungskräfte, und/oder einen Nullmomentpunktsensor (ZMP-Sensor), der ZMPs und/oder Standorte der ZMPs identifiziert. Auch viele andere Beispiele für Sensor(en) 620 sind möglich.
  • Die vorliegende Offenbarung soll in Bezug auf die in dieser Anmeldung beschriebenen besonderen Ausführungsformen, die als Veranschaulichungen verschiedener Aspekte bestimmt sind, nicht beschränkt werden. Es können zahlreiche Modifikationen und Variationen durchgeführt werden, ohne vom Grundgedanken und Schutzumfang der Erfindung abzuweichen, wie Fachleuten auf dem Gebiet ersichtlich sein wird. Im Umfang der Offenbarung werden Fachleuten auf dem Gebiet, zusätzlich zu den hierin aufgeführten, funktional äquivalente Verfahren und Vorrichtungen anhand der vorstehenden Beschreibung ersichtlich. Derartige Modifikationen und Variationen sollen in den Schutzumfang der beigefügten Ansprüche fallen.
  • Die vorstehende ausführliche Beschreibung beschreibt verschiedene Merkmale und Funktionen der offenbarten Systeme, Geräte und Verfahren unter Bezugnahme auf die zugehörigen Zeichnungen. In den Figuren identifizieren gleiche Symbole normalerweise gleiche Komponenten, sofern der Kontext nichts anderes angibt. Die in der ausführlichen Beschreibung, den Figuren und den Ansprüchen beschriebenen exemplarischen Ausführungsformen sollen nicht einschränkend sein. Andere Ausführungsformen können verwendet werden, und andere Änderungen können vorgenommen werden, ohne vom Erfindungsgedanken oder Umfang des hierin dargestellten Gegenstands abzuweichen. Es versteht sich natürlich, dass die Aspekte der vorliegenden Offenbarung, wie sie im Allgemeinen hierin beschrieben und in den Figuren dargestellt sind, in vielen verschiedenen unterschiedlichen Konfigurationen angeordnet, ausgetauscht, kombiniert, getrennt und konzipiert werden können, von denen hierin alle explizit vorgesehen sind.
  • Mit Bezug auf beliebige oder alle der Leiterdiagramme, Szenarien und Ablaufdiagramme in den Figuren, und wie hierin besprochen, kann jeder Block und/oder jede Kommunikation eine Verarbeitung von Informationen und/oder eine Übermittlung von Informationen gemäß beispielhaften Ausführungsformen darstellen. Alternative Ausführungsformen sind im Umfang dieser beispielhaften Ausführungsformen eingeschlossen. In diesen alternativen Ausführungsformen können beispielsweise als Blöcke beschriebene Funktionen, Übermittlungen, Kommunikationen, Anfragen, Antworten und/oder Nachrichten in einer anderen als der gezeigten oder erläuterten Reihenfolge ausgeführt werden, einschließlich im Wesentlichen gleichzeitig oder in umgekehrter Reihenfolge, je nach der involvierten Funktionalität. Ferner können auch mehr oder weniger Blöcke und/oder Funktionen mit beliebigen der hier erläuterten Leiterdiagramme, Szenarien und Ablaufdiagramme verwendet werden, und diese Leiterdiagramme, Szenarien und Ablaufdiagramme können teilweise oder vollständig miteinander kombiniert werden.
  • Ein Block, der eine Verarbeitung von Informationen darstellt, kann Schaltungen entsprechen, die zur Durchführung der spezifischen logischen Funktionen eines hier beschriebenen Verfahrens oder einer Technik konfiguriert sein können. Alternativ oder zusätzlich kann ein Block, der eine Verarbeitung von Informationen darstellt, einem Modul, einem Segment oder einem Teil eines Programmcodes (einschließlich zugehöriger Daten) entsprechen. Der Programmcode kann eine oder mehrere durch einen Prozessor ausführbare Anweisungen zur Implementierung spezifischer logischer Funktionen oder Aktionen in dem Verfahren oder der Technik beinhalten. Der Programmcode und/oder die zugehörigen Daten können auf jeder Art von computerlesbarem Medium, wie z. B. einem Speichergerät, das ein Laufwerk oder eine Festplatte beinhaltet, oder auf einem anderen Speichermedium gespeichert werden.
  • Das computerlesbare Medium kann auch nicht-flüchtige computerlesbare Medien, wie z. B. nicht-flüchtige computerlesbare Medien, die Daten für kurze Zeiträume speichern, wie beispielsweise Registerspeicher, Prozessor-Zwischenspeicher und Direktzugriffsspeicher (RAM), beinhalten. Die computerlesbaren Speichermedien können auch nicht-flüchtige computerlesbare Medien beinhalten, die Programmcode und/oder Daten für längere Zeiträume speichern, wie z. B. einen sekundären oder persistenten Langzeitspeicher, wie beispielsweise Nur-Lese-Speicher (ROM), optische oder magnetische Datenträger Compact-Disc-Nur-Lese-Speicher (CD-ROM). Bei den computerlesbaren Medien kann es sich außerdem um beliebige andere flüchtige oder nicht-flüchtige Speichersysteme handeln. Ein computerlesbares Medium kann beispielsweise als computerlesbares Speichermedium oder als ein physisches Speichergerät betrachtet werden.
  • Darüber hinaus kann ein Block, der eine oder mehrere Informationsübermittlungen darstellt, Informationsübermittlungen zwischen Software- und/oder Hardwaremodulen in demselben physischen Gerät entsprechen. Es können jedoch auch andere Informationsübermittlungen zwischen Softwaremodulen und/oder Hardwaremodulen in verschiedenen physischen Geräten erfolgen.
  • Obgleich hierin verschiedene Aspekte und Ausführungsformen offenbart wurden, sind Fachleuten auf dem Gebiet auch andere Aspekte und Ausführungsformen ersichtlich. Die verschiedenen hierin offenbarten Aspekte und Ausführungsformen sind zu Veranschaulichungszwecken bereitgestellt und sollen nicht einschränkend sein, wobei der wahre Umfang durch die folgenden Ansprüche angegeben ist.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62/639471 [0001]

    Claims (22)

    1. Verfahren, umfassend: Ermitteln einer Teilmenge von Inhalten, die durch eine Anwendung auf einer Benutzeroberfläche (UI) eines Benutzergeräts angezeigt werden, wobei die Teilmenge benutzerspezifische Informationen ausschließt; Übermitteln, an einen externen Anbieter, einer Autofill-Anfrage für die Anwendung, wobei die Autofill-Anfrage die Teilmenge der auf der UI angezeigten Inhalte umfasst; Empfangen, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, eines oder mehrerer vorgeschlagener Benutzerwerte und einer Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird; Erkennen eines Benutzereingabewertes in dem Texteingabefeld; in Reaktion auf das Erkennen des Benutzereingabewertes in dem Texteingabefeld, Ermitteln einer Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten; und Übermitteln einer Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter, wobei die Antwort die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst.
    2. Verfahren nach Anspruch 1, wobei das Ermitteln der Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten ein Anwenden eines zugrundeliegenden Vergleichsmodells umfasst, wobei das zugrundeliegende Vergleichsmodell zwischen Autofill-Anfragen aktualisierbar ist.
    3. Verfahren nach Anspruch 1 oder Anspruch 2, ferner umfassend: Übermitteln, an den externen Anbieter, einer Liste von zugrundeliegenden Vergleichsmodellen; und Empfangen, von dem externen Anbieter, eines ausgewählten zugrundeliegenden Vergleichsmodells aus der Liste von zugrundeliegenden Vergleichsmodellen, wobei das Ermitteln der Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten ein Anwenden des ausgewählten zugrundeliegenden Vergleichsmodells umfasst.
    4. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Ermitteln der Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten ein Anwenden eines Editierdistanzmodells umfasst.
    5. Verfahren nach einem der vorhergehenden Ansprüche, wobei der eine oder die mehreren vorgeschlagenen Benutzerwerte eine Vielzahl von vorgeschlagenen Benutzerwerten umfassen, und wobei die Antwort die Ähnlichkeitsmetrik für einen am besten übereinstimmenden Benutzerwert von der Vielzahl von vorgeschlagenen Benutzerwerten umfasst.
    6. Verfahren nach einem der Ansprüche 1 bis 4, wobei der eine oder die mehreren vorgeschlagenen Benutzerwerte eine Vielzahl von vorgeschlagenen Benutzerwerten umfassen, und wobei die Antwort die Ähnlichkeitsmetrik für jeden von der Vielzahl von vorgeschlagenen Benutzerwerten umfasst.
    7. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Feldklassifizierungsanforderung ferner ein zusätzliches Texteingabefeld angibt, das Verfahren ferner Folgendes umfassend: Erkennen eines zusätzlichen Benutzereingabewertes in dem zusätzlichen Texteingabefeld; in Reaktion auf das Erkennen des zusätzlichen Benutzereingabewertes in dem zusätzlichen Texteingabefeld, Ermitteln einer zusätzlichen Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des zusätzlichen Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten; und Übermitteln einer zusätzlichen Antwort an den externen Anbieter, wobei die zusätzliche Antwort die zusätzliche Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst.
    8. Verfahren nach einem der Ansprüche 1 bis 6, wobei die Feldklassifizierungsanforderung ferner ein zusätzliches Texteingabefeld angibt, das Verfahren ferner Folgendes umfassend: Empfangen, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, eines oder mehrerer zusätzlicher vorgeschlagener Werte, wobei sich der eine oder die mehreren zusätzlichen vorgeschlagenen Werte von dem einen oder den mehreren vorgeschlagenen Benutzerwerten unterscheiden; Erkennen eines zusätzlichen Benutzereingabewertes in dem zusätzlichen T exteingabefeld; in Reaktion auf das Erkennen des zusätzlichen Benutzereingabewertes in dem zusätzlichen Texteingabefeld, Ermitteln einer zusätzlichen Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren zusätzlichen vorgeschlagenen Werten basierend auf einem Vergleich des zusätzlichen Benutzereingabewertes mit jedem von dem einen oder den mehreren zusätzlichen vorgeschlagenen Werten; und Übermitteln einer zusätzlichen Antwort an den externen Anbieter, wobei die zusätzliche Antwort die zusätzliche Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren zusätzlichen vorgeschlagenen Benutzerwerten umfasst.
    9. Verfahren nach einem der vorhergehenden Ansprüche, wobei der eine oder die mehreren vorgeschlagenen Benutzerwerte über eine Schnittstelle empfangen werden, die eine Gesamtanzahl an vorgeschlagenen Benutzerwerten auf eine vorbestimmte maximale Gesamtanzahl an vorgeschlagenen Benutzerwerten begrenzt.
    10. Verfahren nach einem der Ansprüche 1 bis 8, wobei der eine oder die mehreren vorgeschlagenen Benutzerwerte über eine Schnittstelle empfangen werden, die eine Anzahl an vorgeschlagenen Benutzerwerten auf jedes vorbestimmte Texteingabefeld auf eine vorbestimmte maximale Anzahl an vorgeschlagenen Benutzerwerten je Feld begrenzt.
    11. Verfahren nach einem der Ansprüche 1 bis 8, wobei der eine oder die mehreren vorgeschlagenen Benutzerwerte über eine Schnittstelle empfangen werden, die jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten auf eine vorbestimmte Mindestanzahl an Zeichen begrenzt.
    12. Verfahren nach einem der Ansprüche 1 bis 8, wobei der eine oder die mehreren vorgeschlagenen Benutzerwerte über eine Schnittstelle empfangen werden, die jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten auf eine erste vorbestimmte Mindestanzahl an Zeichen begrenzt, wenn der vorgeschlagene Benutzerwert nur numerische Zeichen beinhaltet, und auf eine zweite vorbestimmte Mindestanzahl an Zeichen, wenn der vorgeschlagene Benutzerwert zumindest ein nicht numerisches Zeichen beinhaltet.
    13. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Feldklassifizierungsanforderung über eine Schnittstelle empfangen wird, die eine Anzahl an Benutzereingabefeldern für die Feldklassifizierungsanforderung auf eine vorbestimmte maximale Anzahl an Benutzereingabefeldern begrenzt.
    14. Verfahren nach einem der Ansprüche 1 bis 12, wobei die Feldklassifizierungsanforderung über eine Schnittstelle empfangen wird, die eine Häufigkeit von Feldklassifizierungsanforderungen für die Anwendung durch den externen Anbieter auf eine vorbestimmte maximale Häufigkeit begrenzt.
    15. Verfahren nach einem der Ansprüche 1 bis 12, wobei die Feldklassifizierungsanforderung über eine Schnittstelle empfangen wird, die eine Gesamtanzahl an Feldklassifizierungsanforderungen für die Anwendung durch den externen Anbieter auf eine vorbestimmte maximale Gesamtanzahl an Feldklassifizierungsanforderungen begrenzt.
    16. Verfahren nach einem der Ansprüche 1 bis 12, wobei die Feldklassifizierungsanforderung über eine Schnittstelle empfangen wird, die eine Anzahl an Feldklassifizierungsanforderungen für jedes Texteingabefeld der Anwendung durch den externen Anbieter auf eine maximale Anzahl an Feldklassifizierungsanforderungen je Feld begrenzt.
    17. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: Empfangen, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, eines Autofill-Werts für ein zusätzliches Texteingabefeld, das von der Anwendung angezeigt wird; und In Reaktion auf das Empfangen des Autofill-Werts, Veranlassen, dass der Autofill-Wert in dem zusätzlichen Texteingabefeld angezeigt wird.
    18. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: Ermitteln, dass eine vorbestimmte Betriebssystemressourcenzuweisung überschritten wurde; und in Reaktion auf das Ermitteln, dass die vorbestimmte Betriebssystemressourcenzuweisung überschritten wurde, Ablehnen des Empfangens weiterer vorgeschlagener Benutzerwerte oder Feldklassifizierungsanforderungen von dem externen Anbieter.
    19. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: vorübergehendes Speichern eines zwischengespeicherten Objekts, das den einen oder die mehreren vorgeschlagenen Benutzerwerte umfasst; und Verwenden des zwischengespeicherten Objekts, um eine oder mehrere nachfolgende Feldklassifizierungsanforderungen für die Anwendung, die von dem externen Anbieter aus empfangen werden, zu erfüllen.
    20. Benutzergerät, umfassend: eine Benutzeroberfläche (UI); und ein Betriebssystem, das konfiguriert ist zum: Ermitteln einer Teilmenge von Inhalten, die durch eine Anwendung auf der UI des Benutzergeräts angezeigt werden, wobei die Teilmenge benutzerspezifische Informationen ausschließt; Übermitteln, an einen externen Anbieter, einer Autofill-Anfrage für die Anwendung, wobei die Autofill-Anfrage die Teilmenge der auf der UI angezeigten Inhalte umfasst; Empfangen, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, eines oder mehrerer vorgeschlagener Benutzerwerte und einer Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird; Erkennen eines Benutzereingabewertes in dem Texteingabefeld; in Reaktion auf das Erkennen des Benutzereingabewertes in dem Texteingabefeld, Ermitteln einer Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten; und Übermitteln einer Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter, wobei die Antwort die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst.
    21. Nicht-flüchtiges computerlesbares Medium, in dem Anweisungen gespeichert sind, die durch einen oder mehrere Prozessoren ausführbar sind, um den einen oder die mehreren Prozessoren zu veranlassen, Funktionen durchzuführen, die Folgendes umfassen: Ermitteln einer Teilmenge von Inhalten, die durch eine Anwendung auf einer Benutzeroberfläche (UI) eines Benutzergeräts angezeigt werden, wobei die Teilmenge benutzerspezifische Informationen ausschließt; Übermitteln, an einen externen Anbieter, einer Autofill-Anfrage für die Anwendung, wobei die Autofill-Anfrage die Teilmenge der auf der UI angezeigten Inhalte umfasst; Empfangen, von dem externen Anbieter in Reaktion auf die Autofill-Anfrage, eines oder mehrerer vorgeschlagener Benutzerwerte und einer Feldklassifizierungsanforderung für ein Texteingabefeld, das von der Anwendung auf der UI angezeigt wird; Erkennen eines Benutzereingabewertes in dem Texteingabefeld; in Reaktion auf das Erkennen des Benutzereingabewertes in dem Texteingabefeld, Ermitteln einer Ähnlichkeitsmetrik für jeden von dem einen oder den mehreren vorgeschlagenen Benutzerwerten basierend auf einem Vergleich des Benutzereingabewertes mit jedem von dem einen oder den mehreren vorgeschlagenen Benutzerwerten; und Übermitteln einer Antwort auf die Feldklassifizierungsanforderung an den externen Anbieter, wobei die Antwort die Ähnlichkeitsmetrik für zumindest einen von dem einen oder den mehreren vorgeschlagenen Benutzerwerten umfasst.
    22. Computerprogrammprodukt, das maschinenlesbare Anweisungen umfasst, die, bei Ausführung durch eine Computervorrichtung, die Computervorrichtung veranlassen, das Verfahren nach einem der Ansprüche 1 bis 19 durchzuführen.
    DE112019001184.7T 2018-03-06 2019-03-04 Systeme und Verfahren zur Autofill-Feldklassifizierung Pending DE112019001184T5 (de)

    Applications Claiming Priority (3)

    Application Number Priority Date Filing Date Title
    US201862639471P 2018-03-06 2018-03-06
    US62/639,471 2018-03-06
    PCT/US2019/020615 WO2019173244A1 (en) 2018-03-06 2019-03-04 Systems and methods for autofill field classification

    Publications (1)

    Publication Number Publication Date
    DE112019001184T5 true DE112019001184T5 (de) 2020-12-10

    Family

    ID=65818088

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE112019001184.7T Pending DE112019001184T5 (de) 2018-03-06 2019-03-04 Systeme und Verfahren zur Autofill-Feldklassifizierung

    Country Status (7)

    Country Link
    US (2) US11151311B2 (de)
    EP (2) EP3762840B1 (de)
    JP (2) JP7110373B2 (de)
    KR (2) KR102526620B1 (de)
    CN (1) CN111771203A (de)
    DE (1) DE112019001184T5 (de)
    WO (1) WO2019173244A1 (de)

    Families Citing this family (6)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    KR102526620B1 (ko) 2018-03-06 2023-04-27 구글 엘엘씨 자동채움 필드 분류를 위한 시스템 및 방법
    US11327636B2 (en) * 2019-08-20 2022-05-10 Dell Products L.P. Dynamically scale complexity of a user interface based on cognitive load
    US11449512B2 (en) * 2019-10-22 2022-09-20 Sap Se Value help functionality in distributed cloud environment
    US11556707B2 (en) * 2020-06-18 2023-01-17 Google Llc Fulfillment of actionable requests ahead of a user selecting a particular autocomplete suggestion for completing a current user input
    US11475214B1 (en) * 2021-06-08 2022-10-18 Oracle International Corporation Systems and methods for auto-completing fields on digital forms
    US12032900B2 (en) * 2021-09-30 2024-07-09 International Business Machines Corporation Aiding data entry field

    Family Cites Families (38)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US5845300A (en) * 1996-06-05 1998-12-01 Microsoft Corporation Method and apparatus for suggesting completions for a partially entered data item based on previously-entered, associated data items
    US6754820B1 (en) 2001-01-30 2004-06-22 Tecsec, Inc. Multiple level access system
    US6651217B1 (en) * 1999-09-01 2003-11-18 Microsoft Corporation System and method for populating forms with previously used data values
    US20020062342A1 (en) * 2000-11-22 2002-05-23 Sidles Charles S. Method and system for completing forms on wide area networks such as the internet
    US7343551B1 (en) * 2002-11-27 2008-03-11 Adobe Systems Incorporated Autocompleting form fields based on previously entered values
    JP2005165826A (ja) * 2003-12-04 2005-06-23 Nippon Telegr & Teleph Corp <Ntt> データ入力支援方法とそのシステム、プログラム及び端末装置
    US7660779B2 (en) * 2004-05-12 2010-02-09 Microsoft Corporation Intelligent autofill
    US7836044B2 (en) * 2004-06-22 2010-11-16 Google Inc. Anticipated query generation and processing in a search engine
    US8522257B2 (en) * 2006-11-15 2013-08-27 Yahoo! Inc. System and method for context information retrieval
    US8245151B2 (en) * 2007-01-30 2012-08-14 Oracle International Corporation Web browser window management
    US20080235567A1 (en) * 2007-03-22 2008-09-25 Binu Raj Intelligent form filler
    JP2009277026A (ja) * 2008-05-15 2009-11-26 Nec Corp フォーム入力支援システム、フォーム入力支援方法、及びフォーム入力支援用プログラム
    JP2011170757A (ja) * 2010-02-22 2011-09-01 Nomura Research Institute Ltd 個人情報入力用管理サーバ、クライアント端末、個人情報入力システムおよびプログラム
    US20120063684A1 (en) * 2010-09-09 2012-03-15 Fuji Xerox Co., Ltd. Systems and methods for interactive form filling
    US8850310B2 (en) * 2011-10-11 2014-09-30 Microsoft Corporation Data entry suggestion lists for designated document data entry areas based on data from other document data entry areas
    US20130104022A1 (en) * 2011-10-22 2013-04-25 Jonathan Coon Systems and methods for automatically filling-in information
    US9002847B2 (en) * 2012-02-29 2015-04-07 Hewlett-Packard Development Company, L.P. Identifying an auto-complete communication pattern
    JP2014115198A (ja) 2012-12-10 2014-06-26 Mitsubishi Heavy Ind Ltd ガス採取バック及びレーザ計測装置
    JP6029192B2 (ja) * 2013-01-22 2016-11-24 Necソリューションイノベータ株式会社 入力支援システム、入力支援方法および入力支援プログラム
    US9547420B1 (en) * 2013-02-11 2017-01-17 Amazon Technologies, Inc. Spatial approaches to text suggestion
    US20140258828A1 (en) * 2013-03-11 2014-09-11 Brent Lymer Pick-and-place webform autofill
    US10430516B2 (en) * 2013-06-13 2019-10-01 Microsoft Technology Licensing, Llc Automatically displaying suggestions for entry
    GB2515108A (en) * 2013-06-14 2014-12-17 Mastercard International Inc A browser plug-in and a method of operating a browser plug-in
    US9218332B2 (en) * 2014-01-21 2015-12-22 Linkedin Corporation Method and system for auto-populating electronic forms
    US10210246B2 (en) * 2014-09-26 2019-02-19 Oracle International Corporation Techniques for similarity analysis and data enrichment using knowledge sources
    US10133813B2 (en) * 2015-08-12 2018-11-20 Adobe Systems Incorporated Form value prediction utilizing synonymous field recognition
    US10089292B2 (en) * 2015-09-11 2018-10-02 Adobe Systems Incorporated Categorization of forms to aid in form completion
    US10776571B2 (en) * 2016-05-04 2020-09-15 Google Llc Dispatch of user input to multiple input fields in a user interface
    US11423209B2 (en) * 2016-06-10 2022-08-23 Apple Inc. Device, method, and graphical user interface for classifying and populating fields of electronic forms
    US11049190B2 (en) 2016-07-15 2021-06-29 Intuit Inc. System and method for automatically generating calculations for fields in compliance forms
    CA2975550C (en) * 2016-08-05 2024-02-20 Capital One Services, Llc Browser extension for field detection and automatic population
    US10416854B2 (en) * 2017-03-07 2019-09-17 Google Llc Autofill for a user device
    US10943063B1 (en) * 2017-09-25 2021-03-09 Anonyome Labs, Inc. Apparatus and method to automate website user interface navigation
    US10635748B2 (en) * 2017-12-14 2020-04-28 International Business Machines Corporation Cognitive auto-fill content recommendation
    KR102526620B1 (ko) 2018-03-06 2023-04-27 구글 엘엘씨 자동채움 필드 분류를 위한 시스템 및 방법
    US10749759B2 (en) * 2018-03-23 2020-08-18 Hewlett Packard Enterprise Development Lp System and method to provide network insights for correct and efficient network configuration
    US10936609B2 (en) * 2018-05-18 2021-03-02 Apple Inc. Presenting user information suggestions
    US20210056148A1 (en) * 2019-08-23 2021-02-25 Masterobjects, Inc. System and Method For Asynchronous Client Server Session Communication

    Also Published As

    Publication number Publication date
    KR20230062660A (ko) 2023-05-09
    EP3762840B1 (de) 2022-05-04
    EP3762840A1 (de) 2021-01-13
    US20210406456A1 (en) 2021-12-30
    US20210027013A1 (en) 2021-01-28
    CN111771203A (zh) 2020-10-13
    JP2021517297A (ja) 2021-07-15
    US11151311B2 (en) 2021-10-19
    WO2019173244A1 (en) 2019-09-12
    JP2022160482A (ja) 2022-10-19
    KR102526620B1 (ko) 2023-04-27
    US11604921B2 (en) 2023-03-14
    JP7110373B2 (ja) 2022-08-01
    EP4016371A1 (de) 2022-06-22
    EP4016371B1 (de) 2023-08-23
    KR102601108B1 (ko) 2023-11-10
    KR20200123228A (ko) 2020-10-28
    JP7394184B2 (ja) 2023-12-07

    Similar Documents

    Publication Publication Date Title
    DE112019001184T5 (de) Systeme und Verfahren zur Autofill-Feldklassifizierung
    DE112010004946B4 (de) Dynamisches Verwalten einer sozialen Netzwerkgruppe
    DE102010023691B4 (de) Gemeinsame Nutzung von dynamischen Inhaltsvoreinstellungen und Verhalten von EDV-Geräten
    DE202014010888U1 (de) Systeme zur Überprüfung eines Nutzers auf Basis von Reputationsinformationen
    DE102017121911A1 (de) Detektieren belangloser Social Media-Nachrichten
    DE112013000449T5 (de) Identitätsprüfung für mindestens einen Teilnehmer an einer textgestützten Kommunikation
    US10552781B2 (en) Task transformation responsive to confidentiality assessments
    US20210406913A1 (en) Metric-Driven User Clustering for Online Recommendations
    DE102012220716A1 (de) Verfahren, Datenverarbeitungsvorrichtung und Programm zum Identifizieren vertraulicher Daten
    DE102014114005A1 (de) Risikobeurteilung von Interaktionen von Anwendungen für mobile Einheiten aufgrund von Reputation
    US20140082033A1 (en) Methods and systems for managing files in an on-demand system
    DE112020000927T5 (de) Verwalten sensibler daten
    DE112020006402T5 (de) Maschinelle lernmodelle basierend auf veränderter daten sowie systeme und verfahren zum trainieren und deren verwendung
    DE102013210891A1 (de) Dynamisches Substituieren von Übersetzungen
    DE112016005374T5 (de) Identifizieren von Abfragemustern und zugeordneten aggregierten Statistikdaten unter Suchabfragen
    DE102016204322B4 (de) Sichern einer Einheit unter Verwendung von grafischer Analyse
    DE202014010885U1 (de) Beschleunigung basierend auf zwischengespeicherte Flüsse
    US11048767B2 (en) Combination content search
    US20240179139A1 (en) Auto-Form Fill Based Website Authentication
    DE102021130396A1 (de) Datenzugriffsüberwachung und -steuerung
    DE112021004323T5 (de) Behebung eines benutzerschnittstellenfehlers
    DE112020005700T5 (de) Unterstützen und automatisieren von arbeitsabläufen unter verwendung von strukturierten protokollereignissen
    US9275252B2 (en) Enhanced view compliance tool
    US20210050118A1 (en) Systems And Methods For Facilitating Expert Communications
    CN111052258A (zh) 一种远程会诊的访问方法及会诊终端