# Patent

## Title
Automatically configuring a web browser file when booting an operating system from a data storage device

## Abstract

A data storage device is disclosed comprising a non-volatile memory having a host operating system stored in an unprotected area of the non-volatile memory, a device operating system stored in a protected area of the non-volatile memory, and a device application operable to modify a web browser file, the device application stored in the protected area of the non-volatile memory. When a first read command is received from a host to load the host operating system, the device operating system is returned in response to the first read command. A second read command is then received from the host to load the device application, and a write command is received from the device application executing on the host to modify the web browser file.

## Background
BACKGROUND
Description of the Related Art
Computer systems (e.g., desktops, laptops, portables, etc) typically employ some form of a non-volatile data storage device such as a disk drive, or a solid state drive comprising a non-volatile semiconductor memory such as flash memory. A solid state drive typically emulates a disk drive so that the same communication protocol may be employed. That is, a host typically interfaces with a solid state drive using a standard disk drive communication protocol, such as the Advanced Technology Attachment (ATA) protocol.
Computer systems typically allow access to the Internet using a standard web browser (Internet Explorer, Safari, Firefox, etc.) and therefore have become significant platforms for consumer transactions and advertising. Web browsers store information in configuration files that help facilitate browsing sessions. For example, a website may store a cookie in a browser cookie file, wherein the cookie may include information for authentication and session tracking (state maintenance), or specific information about a user, such as site preferences or the contents of their shopping cart. Each time the user visits a particular website, or browses through different pages of a website, the corresponding cookie information may be transmitted to the website to facilitate the browsing session.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1A shows a data storage device according to an embodiment of the present invention comprising a non-volatile memory and control circuitry.
FIG. 1B shows an embodiment wherein the non-volatile memory stores a device operating system and a device application in a protected area inaccessible by the host, and stores a host operating system and browser application in an unprotected area accessible by the host.
FIG. 1C is a flow diagram executed by the control circuitry according to an embodiment of the present invention wherein when the host requests the host operating system, the storage device returns the device operating system which loads and executes the device application in order to modify a web browser file.
FIG. 2A is a flow diagram according to an embodiment of the present invention wherein the device application scans the file system in the host operating system to find and modify the web browser file.
FIG. 2B is a flow diagram according to an embodiment of the present invention wherein the device operating system copies the device application into the unprotected area of the non-volatile memory and modifies the host operating system so that the device application is executed during the boot process.
FIG. 3A is a flow diagram according to an embodiment of the present invention wherein the web browser file modified by the device application comprises a cookies file.
FIG. 3B shows a web browser window for configuring a list of websites that are blocked from storing cookies on the host system.
FIG. 3C is a flow diagram according to an embodiment of the present invention wherein the device application modifies the cookies exclusion file.
FIG. 3D is a flow diagram according to an embodiment of the present invention wherein the device application modifies a bookmarks file.
FIG. 3E is a flow diagram according to an embodiment of the present invention wherein the device application modifies a security file.
FIG. 3F is a flow diagram according to an embodiment of the present invention wherein the device application modifies a preference file.
FIG. 4 is a flow diagram according to an embodiment of the present invention wherein the device application password protects the modifications made to the web browser file.
FIG. 5 shows an embodiment wherein the data storage device comprises a disk drive.
FIG. 6 shows an embodiment wherein the data storage device comprises a solid state drive.



DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION
FIG. 1A shows a data storage device 2 comprising a non-volatile memory 4 having a host operating system stored in an unprotected area of the non-volatile memory, a device operating system stored in a protected area of the non-volatile memory, and a device application operable to modify a web browser file, the device application stored in the protected area of the non-volatile memory (FIG. 1B). The data storage device further comprises control circuitry 6 for executing the flow diagram of FIG. 1C. When a first read command is received from a host to load the host operating system (step 8), the device operating system is returned in response to the first read command (step 10). A second read command is then received from the host to load the device application (step 12), and a write command is received from the device application executing on the host to modify the web browser file (step 14).
In the embodiment of FIG. 1B, the protected area of the non-volatile memory is inaccessible by the host that boots the host operating system. In this manner, the device operating system and the device application are protected from being modified or disabled by the host. Any suitable technique may be employed to reserve the protected area in the non-volatile memory, such as by reserving a number of data locations and corresponding block addresses for internal use only.
Any suitable technique may be employed to return the device operating system instead of the host operating system during the initial boot operation of the data storage device. Suitable techniques are disclosed in U.S. Pat. No. 6,948,165 entitled “METHOD FOR INSTALLING AN APPLICATION PROGRAM TO BE EXECUTED DURING EACH BOOTLOAD OF A COMPUTER SYSTEM FOR PRESENTING A USER WITH CONTENT OPTIONS PRIOR TO CONVENTIONAL SYSTEM STARTUP PRESENTATION WITHOUT REQUIRING A USER'S PARTICIPATION TO INSTALL THE PROGRAM” the disclosure of which is incorporated herein by reference.
FIG. 2A is a flow diagram according to an embodiment of the present invention which extends on the flow diagram of FIG. 1C. When the device operating system executes the device application, the device application scans the file system of the host operating system (step 16) in order to locate and modify the target web browser file (step 14). After modifying the web browser file, the device application generates a reboot command to reboot the host so that the host resends a request to load the host operating system (step 18) wherein the data storage device returns the host operating system (step 20). After the host operating system is loaded, the host operates normally including to execute the web browser application using the modified web browser file.
The device application may be executed in any suitable manner during the boot of the host. FIG. 2B is a flow diagram according to an embodiment of the present invention wherein while executing the device operating system (step 10) the device application is copied from the protected area of the non-volatile memory to the unprotected area (step 22). The host operating system is then modified (step 24) so that the device application is executed automatically when the host operating system is loaded and executed. For example, the device application (or alias) may be copied into a startup folder of the host operating system. The device operating system then generates a reboot command to reboot the host so that the host resends a request to load the host operating system (step 26). The data storage device returns the host operating system (step 28) which then executes the device application (step 30) which scans the file system (step 16) and modifies a target web browser file (step 14).
In the embodiments of the present invention, any suitable web browser file may be modified for any suitable web browser (Internet Explorer, Netscape, Safari, Firefox, etc.). FIG. 3A shows an embodiment of the present invention wherein the web browser file comprises a cookies file (step 14). In one embodiment, the cookies file stores cookies generated by various Internet websites, wherein the cookies may include information for authentication and session tracking (state maintenance), or specific information about a user, such as site preferences or the contents of their shopping cart. Each time the user visits a particular website, or browses through different pages of a website, the corresponding cookie information may be transmitted to the website to facilitate the browsing session. The device application may make any suitable modification to the cookies stored in the cookies file during each boot of the host, such as erasing one or more of the cookies.
FIG. 3B shows a dialog window displayed from a web browser for enabling/disabling cookies for selected websites. For example, if a user wants to block all cookies generated by a particular website, the user enters the address of the website and selects the “Block” button which adds the website address to the list of blocked websites. The list of website addresses and access setting is typically stored in a cookies exclusion file (a configuration file) for the web browser. FIG. 3C is a flow diagram according to an embodiment of the present invention wherein the web browser file modified by the device application comprises the cookies exclusion file (step 14). For example, the device application may add a number of website addresses to the cookies exclusion file so that the corresponding websites are blocked from using cookies, or allowed to use cookies when viewed with the web browser.
FIG. 3D shows an embodiment of the present invention wherein the device application modifies a bookmarks file of the web browser (step 14). A bookmarks file stores a list of website addresses for quick access by the user during Internet browsing sessions. The bookmarks may be displayed in any suitable manner, such as in a drop-down menu or in a toolbar of the web browser. In one embodiment, the device application deletes or adds websites from the bookmarks file so that it is configured into a desired state.
FIG. 3E shows an embodiment of the present invention wherein the device application modifies a security file of the web browser (step 14). The security file may store configuration information for enabling/disabling certain security features of a web browser, such as enabling/disabling various program components (e.g., Java, .NET, ActiveX, etc.) that a website may attempt to download and run on the host computer together with the standard HTML scripts. Alternatively, the security file may store security certificates which enable secure communication between a website and the web browser over the Internet. In one embodiment, the security file comprises a list of websites having a particular security configuration. The device application may modify the security file in any suitable manner, such as reconfiguring the security file, deleting or modifying security certificates, adding/deleting websites from a list of trusted websites, etc.
FIG. 3F shows an embodiment of the present invention wherein the device application modifies a preference file of the web browser (step 14). The preference file may store configuration information, such as the address of a website displayed initially (the homepage) when the web browser is first launched. In one embodiment, the device application modifies the homepage in the configuration file so that the web browser is forced to visit the corresponding website at least once after each boot of the host operating system.
FIG. 4 is a flow diagram according to an embodiment of the present invention wherein the modified web browser file is password protected by the device application (step 32) to prevent a user from reversing the changes. In one embodiment, the web browser file is continuously monitored by the device application running in the background to ensure the modifications are not reversed. In another embodiment, the device application configures the data storage device to monitor the web browser file and ensure any attempted change to the file does not reverse the modifications made by the device application. For example, the device application may identify certain storage locations in the non-volatile memory (e.g., logical blocks) that store the modified web browser file. If the host attempts to modify these storage locations (by writing to the web browser file), the data storage device filters the access requests to ensure the web browser file maintains the desired state as configured by the device application. In one embodiment, changes to the web browser file are allowed if the access request includes the authenticating password. For example, an authenticated web server accessed over the Internet may be allowed to configure the web browser file into a new state, such as by enabling cookies for a particular website.
The embodiments of the present invention may be employed in any suitable data storage device. FIG. 5 shows a data storage device comprising a disk drive including a head 34 actuated over a disk 36 and control circuitry 38 for executing the flow diagrams described herein. FIG. 6 shows a solid state drive comprising a plurality of non-volatile semiconductor memories 40A, 40B, etc., such as flash memories, and control circuitry 42 for executing the flow diagrams described herein. A hybrid data storage device may also be employed comprising components of a disk drive shown in FIG. 5 combined with the non-volatile semiconductor memories shown in FIG. 6.
Any suitable control circuitry may be employed to implement the flow diagrams in the embodiments of the present invention, such as any suitable integrated circuit or circuits. In one embodiment, the control circuitry comprises a microprocessor executing instructions, the instructions being operable to cause the microprocessor to perform the steps of the flow diagrams described herein. The instructions may be stored in any computer-readable medium. In one embodiment, they may be stored on a non-volatile semiconductor memory external to the microprocessor, or integrated with the microprocessor in a system on a chip (SOC). In another embodiment, the instructions are read into a volatile semiconductor memory when the data storage device is powered on. In yet another embodiment, the control circuitry comprises suitable logic circuitry, such as state machine circuitry.

## Claims

1. A data storage device comprising:
a non-volatile memory comprising:
a host operating system stored in an unprotected area of the non-volatile memory;
a device operating system stored in a protected area of the non-volatile memory; and
a device application operable to modify a web browser file of a web browser independent of a user of the web browser, the device application stored in the protected area of the non-volatile memory;

control circuitry operable to:
receive a first read command from a host to load the host operating system;
return the device operating system in response to the first read command;
receive a second read command from the host to load the device application; and
receive a write command from the device application loaded on the host to modify the web browser file.

2. The data storage device as recited in claim 1, wherein:
the host operating system comprises a file system including the web browser file; and
the device application is operable to scan the file system to find the web browser file.

3. The data storage device as recited in claim 1, wherein the web browser file comprises a cookies file.

4. The data storage device as recited in claim 1, wherein the web browser file comprises a website list for storing websites excluded from storing cookies at the host.

5. The data storage device as recited in claim 4, wherein the device application is operable to add a plurality of website names to the website list.

6. The data storage device as recited in claim 1, wherein the web browser file comprises a bookmarks file.

7. The data storage device as recited in claim 1, wherein the web browser file comprises a security file.

8. The data storage device as recited in claim 1, wherein the web browser file comprises a preference file.

9. The data storage device as recited in claim 1, wherein the device application is operable to password protect the modified web browser file.

10. A method of operating a data storage device, the data storage device comprising a non-volatile memory comprising:
a host operating system stored in an unprotected area of the non-volatile memory;
a device operating system stored in a protected area of the non-volatile memory; and
a device application operable to modify a web browser file of a web browser independent of a user of the web browser, the device application stored in the protected area of the non-volatile memory;

the method comprising:
receiving a first read command from a host to load the host operating system;
returning the device operating system in response to the first read command;
receiving a second read command from the host to load the device application; and
receiving a write command from the device application loaded on the host to modify the web browser file.

11. The method as recited in claim 10, wherein:
the host operating system comprises a file system including the web browser file; and
the device application is operable to scan the file system to find the web browser file.

12. The method as recited in claim 10, wherein the web browser file comprises a cookies file.

13. The method as recited in claim 10, wherein the web browser file comprises a bookmarks file.

14. The method as recited in claim 10, wherein the web browser file comprises a security file.

15. The method as recited in claim 10, wherein the web browser file comprises a preference file.

16. The method as recited in claim 10, wherein the device application is operable to password protect the modified web browser file.