systems, methods, and software can be used to monitor resource access. In some aspect, an electronic device determines that an application attempts to access a resource on the electronic device. The electronic device determines whether the application is operating in a foreground of an operating system (os) on the electronic device or in a background of the os on the electronic device. If the application is operating in the foreground, the application is permitted to access the resource. If the application is operating in the background, a notification is generated to indicate that a background application attempts to access a resource.
|
13. A method, comprising:
determining that an application attempts to access a resource on an electronic device, wherein the resource is at least one of a camera, a microphone, a location determination module, or contact information;
determining whether the electronic device is in an idle state, and in response to determining that the electronic device is in the idle state and that the application attempts to access the resource while operating in the idle state, generating a notification indicating that the application attempts to access a resource while the electronic device is in the idle state;
outputting, on the electronic device, a first number of accesses made by the application when operating in a foreground of an operating system (os) and a second number of accesses made by the application when operating in a background of the os.
1. A method, comprising:
determining that an application attempts to access a resource on an electronic device, wherein the resource is at least one of a camera, a microphone, a location determination module, or contact information;
determining whether the application is operating in a foreground of an operating system (os) on the electronic device or in a background of the os on the electronic device;
in response to determining that the application is operating in the background and that the application attempts to access the resource while operating in the background, generating a notification indicating that a background application attempts to access a resource; and
outputting, on the electronic device, a first number of accesses made by the application when operating in the foreground of the os and a second number of accesses made by the application when operating in the background of the os.
5. An electronic device, comprising: a memory; and
at least one hardware processor communicatively coupled with the memory and configured to:
determine that an application attempts to access a resource on the electronic device, wherein the resource is at least one of a camera, a microphone, a location determination module, or contact information;
determine whether the application is operating in a foreground of an operating system (os) on the electronic device or in a background of the os on the electronic device;
in response to determining that the application is operating in the background and that the application attempts to access the resource while operating in the background, generate a notification indicating that a background application attempts to access a resource; and
output, on the electronic device, a first number of accesses made by the application when operating in the foreground of the os and a second number of accesses made by the application when operating in the background of the os.
9. A non-transitory computer-readable medium containing instructions which, when executed, cause a computing device to perform operations comprising:
determining that an application attempts to access a resource on an electronic device, wherein the resource is at least one of a camera, a microphone, a location determination module, or contact information;
determining whether the application is operating in a foreground of an operating system (os) on the electronic device or in a background of the os on the electronic device;
in response to determining that the application is operating in the background and that the application attempts to access the resource while operating in the background, generating a notification indicating that a background application attempts to access a resource; and
outputting, on the electronic device, a first number of accesses made by the application when operating in the foreground of the os and a second number of accesses made by the application when operating in the background of the os.
2. The method of
outputting the notification on a user interface of the electronic device;
receiving a user input indicating whether the application is permitted to access the resource;
if the user input indicates that the application is permitted to access the resource, permitting the application to access the resource; and
if the user input indicates that the application is not permitted to access the resource, preventing the application to access the resource.
3. The method of
4. The method of
6. The electronic device of
output the notification on a user interface of the electronic device;
receive a user input indicating whether the application is permitted to access the resource;
if the user input indicates that the application is permitted to access the resource, permit the application to access the resource; and
if the user input indicates that the application is not permitted to access the resource, prevent the application from accessing the resource.
7. The electronic device of
8. The electronic device of
10. The computer-readable medium of
outputting the notification on a user interface of the electronic device;
receiving a user input indicating whether the application is permitted to access the resource;
if the user input indicates that the application is permitted to access the resource, permitting the application to access the resource; and
if the user input indicates that the application is not permitted to access the resource, preventing the application from accessing the resource.
11. The computer-readable medium of
12. The computer-readable medium of
14. The method of
|
This application claims the benefit of priority of U.S. application Ser. No. 62/247,154, filed on Oct. 27, 2015, which is incorporated by reference herein in its entirety.
The present disclosure relates to detecting resource access in an electronic device. Many electronic devices, e.g., mobile devices or other communication devices, enable users to run applications on the communication devices. The applications may access resources of the communication devices.
Like reference numbers and designations in the various drawings indicate like elements.
In some cases, an operating system of an electronic device, e.g., a mobile device, can set permissions for an application to access a resource on the communication devices. In some cases, a resource can include an application, set of applications, software, software modules, hardware, or any combination thereof that can be configured to provide information or services. Examples of resources include a camera, a microphone, a location determination module, e.g., a Global Positioning Service (GPS) module, contact information, text or multimedia messaging module, folders and files, and etc.
In some cases, when an application is installed, the operating system can ask the user whether the application has the permission to access one or more resources. If the user grants the permission, the application can access the resources without further permissions from the users. The access can occur at any time and location. In some cases, a user may receive a notification if an application attempts to access a resource without permission. However, a user may not receive a notification if an application accesses a resource with permission.
In some cases, granting permissions at installation may not be sufficient to provide privacy and security to a user. A user may be unaware of the circumstances of a resource access made by an application. For example, the application may turn on a microphone during a private meeting or at midnight without user knowledge. Therefore, the user may not be able to determine whether the application is accessing the resource illegitimately.
In some cases, an application may operate in the background of the operating system. A user does not know when and if an application is operating in the background of the operating system. Therefore, a user may not be aware that an application is accessing a specific resource while the application is operating in the background.
In some cases, an application may access a camera preview buffer without user knowledge. A camera preview buffer is a buffer that stores image files captured by a camera when the camera is in a preview mode. In some cases, prior to taking a picture, the camera may capture an image and store the image in the preview buffer. In some cases, the image may be outputted, e.g., displayed in the screen, so that the user can review the image before deciding to take the picture. When the camera is instructed to take a picture, e.g., by a user click or a tap, the image file is copied into a folder that stores the photos. If the camera does not receive the instruction to take the picture, the image file remains in the preview buffer. In some cases, the image file in the preview buffer can be deleted after the picture is taken. In some cases, the image file in the preview buffer can be deleted after a period of time or the buffer is overflown. In some cases, while the operating system may capture events when a picture or a video is taken, the operating system does not monitor when a preview buffer is accessed. Therefore, a user may not be aware that an application is accessing the preview of the hidden pictures or videos.
In some cases, accesses to a resource on an electronic device can be monitored. In some cases, a number of accesses to a resource made by one or more applications over a monitoring period can be determined. In some cases, information associated with an access, e.g., the time, the duration, the application that accesses the resource, and the location of the electronic device when the access is made, can be determined. In some cases, the information associated with one or more accesses can be outputted to the user. Therefore, a user can review the resource access record and determine whether an application made illegitimate access to a resource.
In some cases, when an application attempts to access a resource, whether an application is operating in the background of the operating system or the foreground of the operating system is determined. In some cases, a notification is generated to alert the user that a background application attempts to access a resource. This approach may enable a user to detect an illegitimate access made by a background application.
In some cases, an access to a camera preview buffer can be configured as a resource access event. The event can be recorded and displayed. In some cases, notifications can be generated to indicate an attempt to access the camera preview buffer. In some cases, whether the application is running on the foreground or the background is determined. Therefore, the notification can indicate that a background application attempts to access the camera preview buffer. This approach may enable a user to detect an illegitimate access to the camera preview buffer.
The example processing unit 162 can include one or more processing components (alternatively referred to as “processors” or “central processing units” (CPUs)) configured to execute instructions related to one or more of the processes, steps, or actions described above in connection with one or more of the implementations disclosed herein. In some implementations, the processing unit 162 can be configured to generate control information, such as a measurement report, or respond to received information, such as control information from a network node. The processing unit 162 can also be configured to make a radio resource management (RRM) decision such as cell selection/reselection information or trigger a measurement report. The processing unit 162 can also include other auxiliary components, such as random access memory (RAM) and read-only memory (ROM).
The example communication subsystem 166 can be configured to provide wireless or wireline communication for data or control information provided by the processing unit 162. The communication subsystem 166 can include, for example, one or more antennas, a receiver, a transmitter, a local oscillator, a mixer, and a digital signal processing (DSP) unit. In some implementations, the communication subsystem 166 can support multiple input multiple output (MIMO) transmissions. In some implementations, the receivers in the communication subsystem 166 can be an advanced receiver or a baseline receiver. Two receivers can be implemented with identical, similar, or different receiver processing algorithms.
The example user interface 168 can include, for example, one or more of a display or touch screen display (for example, a liquid crystal display (LCD), a light emitting display (LED), an organic light emitting display (OLED), or a micro-electromechanical system (MEMS) display), a keyboard or keypad, a trackball, a speaker, or a microphone. As shown in
The example memory 164 can be a computer-readable storage medium on the electronic device 102. Examples of the memory 164 include volatile and non-volatile memory, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), removable media, and others. The memory 164 can store an operating system (OS) of the electronic device 102 and various other computer-executable software programs for performing one or more of the processes, steps, or actions described above.
As shown in
The electronic device 102 also includes applications 110. The applications 110 include programs, modules, scripts, processes, or other objects that can be configured to access one or more resources in the resources 120. For example, applications 110 can be implemented as Enterprise Java Beans (EJBs). Design-time components may have the ability to generate run-time implementations into different platforms, such as J2EE (Java 2 Platform, Enterprise Edition), ABAP (Advanced Business Application Programming) objects, or Microsoft's .NET. Further, while illustrated as internal to the electronic device 102, one or more processes associated with an application may be stored, referenced, or executed remotely. For example, a portion of an application may be an interface to a web service that is remotely executed. Moreover, an application may be a child or sub-module of another software module (not illustrated). The applications 110 can include native applications in the operating systems, enterprise applications administrated by an employer of the user, or third-party applications downloaded by the user.
The electronic device 102 also includes a resource access monitoring module 130. The resource access monitoring module 130 represents an application, set of applications, software, software modules, hardware, or any combination thereof that can be configured to detect a resource access made by an application. In some cases, when an application in the applications 110 accesses a resource in the resources 120, an event is generated. The event is reported to the resource access monitoring module 130. The resource access monitoring module 130 can determine the name of the resource, the name of the application, the time of the access, the duration of the access, the location of the access, or any other information associated with the event. In some cases, the resource access monitoring module 130 can generate a notification in response to the event. In some cases, the resource access monitoring module 130 can store the information associated with the event in the access event records 140. In some cases, the resource access monitoring module 130 can retrieve the resource access events during a monitoring period, compile the number of accesses made by different applications to different resources, and generate a graphic user interface representation based on the compiled number of accesses.
Turning to a general description, an electronic device, e.g., the electronic device 102, may include, without limitation, any of the following: mobile electronic device, computing device, user device, mobile station, subscriber station, portable electronic device, mobile communications device, wireless modem, or wireless terminal. Examples of an electronic device (e.g., the electronic device 102) may include a cellular phone, personal data assistant (PDA), smart phone, laptop, tablet personal computer (PC), pager, portable computer, portable gaming device, wearable electronic device, health/medical/fitness device, camera, vehicle, or other mobile communications device having components for communicating voice or data via a wireless communication network. The wireless communication network may include a wireless link over at least one of a licensed spectrum and an unlicensed spectrum. The term “electronic device” can also refer to any hardware or software component that can terminate a communication session for a user. In addition, the terms “user equipment,” “UE,” “user equipment device,” “user agent,” “UA,” “user device,” and “mobile device” can be used synonymously herein.
The example process 200 begins at 202, where a monitoring period for monitoring resource access on an electronic device is determined. In some cases, the monitoring period can be configured by a system administrator, a user of the electronic device, or a combination thereof. In some cases, default monitoring periods can be set by an operating system of the electronic device. In some cases, the default monitoring periods can be changed by a system administrator, a user of the electronic device, or a combination thereof. In some cases, more than one monitoring period, e.g., a day, a week, and a month, can be configured.
At 204, a number of accesses to a resource on the electronic device made by an application during the monitoring period is determined. In some cases, the resource to be monitored can be configured by a system administrator, a user of the electronic device, or a combination thereof. In some cases, more than one resources can be configured for monitoring. In some cases, the operating system can set by default one or more resources to be monitored. A system administrator, a user of the electronic device, or a combination thereof can add, remove, or change the resources to be monitored.
In some cases, a system administrator, a user of the electronic device, or a combination thereof can configure one or more applications whose resource access is monitored. In some cases, the operating system can set by default one or more applications to be monitored. A system administrator, a user of the electronic device, or a combination thereof can add, remove, or change the applications to be monitored. In some cases, the resource access of all the applications can be monitored. In some cases, a subset of applications, e.g., the applications that are provided from third party, can be monitored. In some cases, an access to a resource by an application may be monitored when the application has permission to access the resource.
In some cases, an event can be generated when an application accesses a resource configured to be monitored. The event can be captured by the operating system, e.g., by the resource access monitoring module 130 shown in
In some cases, additional attributes of the resource access event can be determined. For example, whether the application that accesses the resources is operating in the foreground or in the background can be determined. These attributes can be included in the information associated with the event. In some cases, an operating system of the electronic device, a user of the electronic device, a system administrator, or a combination thereof can configure the resource access monitoring module 130 to monitor the events that have one or more specific attributes. In some cases, only the events that are triggered by background applications are monitored, recorded, outputted, prevented, or a combination thereof.
As another example, the state of the device e.g., an idle state or an active state can be determined. Examples of an idle device include a device in sleep, power-saving, doze, bedtime, or standby mode. Examples of an idle device further include a locked device (wherein authentication is needed in order to access the device). A screen saver may be displayed while the device is idle. The display of the device may be off when the device is in sleep, power-saving, doze, bedtime, or standby mode. A lock screen may be displayed while the device is locked. These attributes can be included in the information associated with the event. In some cases, an operating system of the electronic device, a user of the electronic device, a system administrator, or a combination thereof can configure the resource access monitoring module 130 to monitor the events that have one or more specific attributes. Events during an idle state may be more suspicious and therefore monitored, recorded, outputted, prevented, or a combination thereof. For example, data being transmitted overnight while the device is locked may be considered unusual activity and may trigger an event being generated.
In some cases, a composite event can be configured. A composite event can include the occurrence of more than one resource access event in a short time frame. In one example, a user can configure a composite event that includes an access to a folder with sensitive information (e.g., a folder containing sensitive photos) and an access to a radio component in the electronic device. If these events occurred in a short time frame within each other, e.g., 5 seconds, a composite event is generated and captured. In some cases, the length of the time frame can be configured by the operating system, an administrator, a user, or a combination thereof. In some cases, the user can configure the composite event to include accesses that are made by only the background applications. The composite event can be monitored, recorded, outputted, prevented, or a combination thereof. This approach can enable the user to prevent an upload of sensitive information without the user's knowledge.
At 206, information associated with at least one resource access is outputted on the electronic device. In some cases, information associated with one event or one composite event can be outputted on the electronic device. For example, the event can be outputted when the resource is accessed.
In some cases, as shown in
In some cases, as shown in
In some cases, a plurality of resources access events, or composite events, can be outputted in a graphic user interface. For example, a timeline view of resource access within a monitoring period can be displayed.
The graphic user interface 700 includes a timeline section 702. The timeline section 702 includes a plurality of vertical bars, each representing one microphone access event. The timeline section 702 also includes a time scale that indicates the time duration of the last 12 hours. The time scale includes labels showing different times within the 24 hours, e.g., 12 AM, 3 AM, 6 AM, 9 AM, and etc. As shown in
The graphic user interface 700 also includes an individual event section 710. The individual event section 710 can display detailed information associated with an individual event or composite event of resource access. For example, as shown in
In some cases, the graphic user interface 700 can enable the user to traverse the individual events displayed in the timeline section 702. For example, the graphic user interface 700 includes a forward button 714. When the user selects the forward button 714, detailed information associated with the next event can be displayed in the individual event section 710. In some cases, a user can select a bar in the timeline section 702. In response, detailed information associated with the event corresponding to the selected bar can be displayed in the individual event section 710. Other user actions, e.g., scrolling, dragging, can also be used to change the event that is displayed in the individual event section 710.
In some cases, the timeline view can be used to display a plurality of resources accessed by one application during a monitoring period. In these cases, when the resource access events are traversed through a timeline, the name of the application in the individual event section 710 may stay the same, while the name of the resource may change. In some cases, the timeline view can be used to display a plurality of resources accessed by a plurality of applications during a monitoring period. In these cases, when the resource access events are traversed through a timeline, both the name of the application in the individual event section 710 and the name of the resource may change.
In some cases, the number of resource accesses made by an application within a monitoring period can be outputted. In some cases, the number of resource accesses can be represented in a linear scale. In one example, the number of resource accesses can be represented in a linear scale based on the number of accesses made by the application that had the most access during the monitoring period.
In some cases, nonlinear scale can be used to represent the number of resource accesses.
In the linear scale representation 1108, the length of the shaded bar is determined based on the number of accesses on a linear scale. As shown in
The schematic diagram 1200 also includes a nonlinear solid bar representation 1206 and a linear solid bar representation 1208. As discussed previously, the number of accesses made by applications with small or medium number of accesses may be difficult to be identified using the linear scale.
In some cases, a graphic user interface can be used to enable a user to view the resource accesses made by one or more applications during a monitoring period. The graphic user interface can include an application view and an application detail view. An application view can include a list of applications on the electronic device.
The graphic user interface can also include an application detail view. An application detail view can indicate detailed information of resource accesses made by an individual application, e.g., the number of accesses made by an application to each resource during a monitoring period.
In some cases, duration of resource access can be accumulated and outputted. For example, the total duration of access to a resource made by an application during a monitoring period can be accumulated. The total duration can be outputted in a graphic user interface. As discussed previously in association with
In some cases, because a user may not be aware of a background resource access, the background resource access may have a more severe impact on the privacy of a user than foreground resource access. Therefore, in some implementations, resource access by a background application can be monitored. A user can be pre-warned before a background access occurs, notified after the background access occurs, or a combination thereof.
The example process 300 begins at 302, where an application attempting to access a resource on an electronic device is determined. In some cases, when an application attempts to access a resource, the application interacts with an application programming interface (API) associated with the resource. The operating system of the electronic device, or a software module running on the operating system, can be notified when the API is interacted.
At 304, whether the application is operating in a foreground of the operating system or in a background of the operating system is determined. In some cases, when an application is running in the background, an attribute associated with the application is set to indicate that the application is running in the background. In some cases, the attribute can be checked to determine whether the application is running in the foreground or the background.
If the application is determined to operate in the foreground, the process 300 proceeds from 304 to 306, where the application is permitted to access the resource. As discussed previously, in some cases, the foreground access is not monitored. Alternatively or in combination, the foreground access is monitored and the number of foreground accesses can be outputted. In some cases, whether only background access is monitored can be configured.
If the application is determined to operate in the background, the process 300 proceeds from 304 to 308, where a notification is generated. The notification indicates that a background application attempts to access a resource. At 310, the notification is outputted via a user interface of the electronic device. As discussed previously, in some cases, the notification can include information, e.g., time, duration, location, of the access.
In some cases, user authorization can be required for a background application to access a resource. For example, at 312, a user input indicating whether the application is permitted to access the resource can be received. The user input can be a selection of a user interface object, a tap, a touch, a click, a scroll, or any other user actions. If the user input indicates that the application is permitted to access the resource, the process 300 proceeds from 312 to 314, where the application is permitted to access the resource in the background. If the user input indicates that the application is not permitted to access the resource, the process 300 proceeds from 312 to 316, where the application is prevented from accessing the resource.
In some cases, an operating system, a user, a system administrator, or a combination thereof can configure whether background access is permitted with authorization, permitted without authorization, or not permitted for a particular application, a particular resource, or a combination thereof.
In some cases, access to a camera preview buffer is monitored.
The example process 400 begins at 402, where an application attempts to access a camera preview buffer on an electronic device is determined. In some cases, the camera preview buffer can be a resource whose access is monitored and reported. For example, an event can be configured for the camera preview buffer. In some cases, the event can be triggered when an application accesses an API that is associated with the camera preview buffer. For example, the event can be triggered when the application attempts to open the camera preview buffer, read any files in the camera preview buffer, or a combination thereof.
At 404, in response to the determining, an event record indicating that the application attempts to access the camera preview buffer is generated. In some cases, as discussed previously, the event record can be accumulated over a monitoring period. In some cases, the accumulated event record can be outputted, e.g., in a timeline view or in an application detail view.
Alternatively or in combination, user permissions can be required for a background application accessing the camera preview buffer. For example, at 406, whether the application is operating in the foreground of an operating system or in the background of the operating system is determined. In some cases, if the application is operating in the foreground, the permission can be granted. If the application is determined to be operating in the background, at 408, a notification is generated. The notification can indicate that a background application attempts to access a camera preview buffer. As discussed previously, in some cases, the notification can include information, e.g., time, duration, location, of the access. At 410, the notification is outputted via a user interface of the electronic device.
At 412, a user input is received. The user input can indicate whether the application is permitted to access the camera preview buffer. The user input can be a selection of a user interface object, a tap, a touch, a click, a scroll, or any other user actions. At 414, whether to allow the application to access the camera previous buffer is determined based on the user input. If the user input indicates that the application is permitted to access the camera preview buffer, the access can be granted. If the user input indicates that the application is not permitted to access the resource, the access can be denied.
Some of the subject matter and operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Some of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on a computer storage medium for execution by, or to control the operation of, data-processing apparatus. A computer storage medium can be, or can be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or be included in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices). The computer storage medium can be transitory or non-transitory.
The term “data-processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
Some of the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random-access memory or both. A computer can include a processor that performs actions in accordance with instructions, and one or more memory devices that store the instructions and data. A computer may also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic disks, magneto optical disks, or optical disks. However, a computer need not have such devices. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices (e.g., EPROM, EEPROM, flash memory devices, and others), magnetic disks (e.g., internal hard disks, removable disks, and others), magneto optical disks, and CD ROM and DVD-ROM disks. In some cases, the processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, operations can be implemented on a computer having a display device (e.g., a monitor, or another type of display device) for outputting information to the user and a keyboard and a pointing device (e.g., a mouse, a trackball, a tablet, a touch sensitive screen, or another type of pointing device) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
A computer system may include a single computing device, or multiple computers that operate in proximity or generally remote from each other and typically interact through a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), a network comprising a satellite link, and peer-to-peer networks (e.g., ad hoc peer-to-peer networks). A relationship of client and server may arise by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
While this specification contains many details, these should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of features specific to particular examples. Certain features that are described in this specification in the context of separate implementations can also be combined. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple embodiments separately or in any suitable sub-combination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementation descried above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
Also, techniques, systems, subsystems, and methods described and illustrated in the various implementations as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component, whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing form the spirit and scope disclosed herein.
While the above detailed description has shown, described, and pointed out the fundamental novel features of the disclosure as applied to various implementations, it will be understood that various omissions, substitutions, and changes in the form and details of the system illustrated may be made by those skilled in the art, without departing from the intent of the disclosure. In addition, the order of method steps is not implied by the order they appear in the claims.
Langlois, Michael George, Chin, Eugene, Schieman, Adam Richard, Ludwig, Sue Hsiu Ying, Loustel, Jason Scott, Zezin, Maxim, Ducharme, Dale
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
6975330, | Aug 08 2001 | T-MOBILE INNOVATIONS LLC | Graphic display of network performance information |
8644881, | Nov 09 2009 | LG Electronics Inc. | Mobile terminal and control method thereof |
8914494, | Jun 28 2000 | System and method for user behavioral management in a computing environment | |
9977911, | Dec 30 2014 | Meta Platforms, Inc | Methods and systems for managing permissions to access mobile device resources |
20030122874, | |||
20060190991, | |||
20070038763, | |||
20100023611, | |||
20120245941, | |||
20120326947, | |||
20130107029, | |||
20130152192, | |||
20130329075, | |||
20140007106, | |||
20140109085, | |||
20140143864, | |||
20140282272, | |||
20160062793, | |||
CN103874986, | |||
CN104766005, | |||
WO2015056056, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 25 2008 | CHIN, EUGENE | Research In Motion Limited | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042000 | /0338 | |
Jul 09 2013 | Research In Motion Limited | BlackBerry Limited | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 042246 | /0535 | |
Oct 26 2016 | BlackBerry Limited | (assignment on the face of the patent) | / | |||
Nov 24 2016 | SCHIEMAN, ADAM RICHARD | BlackBerry Limited | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042245 | /0567 | |
Dec 02 2016 | LUDWIG, SUE HSIU YING | BlackBerry Limited | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042245 | /0567 | |
Dec 06 2016 | ZEZIN, MAXIM | HARMAN CONNECTED SERVICES, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042246 | /0230 | |
Dec 09 2016 | LOUSTEL, JASON SCOTT | BlackBerry Limited | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042245 | /0567 | |
Dec 13 2016 | DUCHARME, DALE | BlackBerry Limited | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042245 | /0567 | |
Dec 14 2016 | LANGLOIS, MICHAEL GEORGE | BlackBerry Limited | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042245 | /0567 | |
Dec 21 2016 | HARMAN CONNECTED SERVICES, INC | BlackBerry Limited | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 042000 | /0537 | |
May 11 2023 | BlackBerry Limited | Malikie Innovations Limited | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 064104 | /0103 | |
May 11 2023 | BlackBerry Limited | Malikie Innovations Limited | NUNC PRO TUNC ASSIGNMENT SEE DOCUMENT FOR DETAILS | 064271 | /0199 |
Date | Maintenance Fee Events |
Feb 13 2024 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Sep 01 2023 | 4 years fee payment window open |
Mar 01 2024 | 6 months grace period start (w surcharge) |
Sep 01 2024 | patent expiry (for year 4) |
Sep 01 2026 | 2 years to revive unintentionally abandoned end. (for year 4) |
Sep 01 2027 | 8 years fee payment window open |
Mar 01 2028 | 6 months grace period start (w surcharge) |
Sep 01 2028 | patent expiry (for year 8) |
Sep 01 2030 | 2 years to revive unintentionally abandoned end. (for year 8) |
Sep 01 2031 | 12 years fee payment window open |
Mar 01 2032 | 6 months grace period start (w surcharge) |
Sep 01 2032 | patent expiry (for year 12) |
Sep 01 2034 | 2 years to revive unintentionally abandoned end. (for year 12) |