DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file.
Continued Examination Under 37 CFR 1.114
A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicant's submission filed on 11/07/2025 has been entered.
Response to Arguments
In response to 35 USC 103 on pages 7-10 of the remarks, filed 11/07/2025, applicant argues that Wang-Hamer-Karanth fails to teach “wherein the programming construct is a class constructor for an ad class, and wherein the identity is determined by searching for a name for the ad class”.
Applicant’s argument have been considered but are moot, because the newly recited amendment does not rely on the newly recited reference being applied to the prior rejection of record or any teaching or matter specifically challenged in the argument.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 38, 40, 42, 44, and 50 are rejected under 35 U.S.C. 103 as being unpatentable over Wang et al. US 10,025,952 B1 hereafter Wang in view of Bellinger (US 20120209725) and in further view of Karanth et al. (US 20170337600, hereinafter Karanth).
As to claim 38
Wang discloses:
A computing device for performing device management, the computing device comprising: (Wang fig. 1; col. 8, ll. 35-40 "FIG. 1 provides an exemplary illustration of a typical mobile device 1 02 on the left versus a mobile device 1 04 using the present invention on the right. As shown, mobile phone 104 on the right allows a user to input sensitive information without the threat of unwanted visual observation of the sensitive information"]”)
a hardware processor, the hardware processor configured for: (col. 20 ll. 23-40, “… It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart and / or block diagram block or blocks.”)
launching an application package within a virtual container executing in a runtime of the computing device, wherein an application is initialized during launch of the application package; (Wang col. 12, ll. 33-43 "Underneath the hood, whenever an app is started, Android forks off [i.e., launches] a new virtual machine. [ ...] Individual class methods can be hooked, allowing injected code to be executed prior to a base method calls [i.e., initialized during launch], following the completion of the base method call, or in place of the base method")
intercepting, using the determined identity of the programming construct, a call to the programming construct during launch of the application. (Wang col. 12, lines 40-55 "Individual class methods can be hooked, allowing injected code to be executed prior to a base method calls. following the completion of the base method call, or in place of the base method. … Below is an exemplary API provided by Xposed for injecting method, constructor, and fields. It should be noted that XXX denotes the specified data type, boolean, int, float, etc. hookAIIMethods( )/hookAIIConstructors( ); findMethod( )/ findConstructor( )/findField( ); callMethod( )/callStaticMethod( )/newlnstane( ); getXXXField( )/setXXXField( ); getStaticXXXField( )/setStaticXXXField( ); getAdditionalXXXField( )/setAdditionalXXXField( )").
Wang does not expressly teach but Belleger teaches upon launch of the application package, determining an identity of a programming construct used by the application during initialization (Bellinger teaches Ads may be constructed from an image, JavaScript program, or multimedia object using technologies like Java, Shockwave, or Flash, which often use animation, sound, or video to attract the user's attention [0005]. The ad scripting language file (e.g, SmartAds.js), is loaded. In one embodiment, having instantiated a SmartAds class instance, one or more ads can be added using the class's add method. As part of that method, banners are specified with this method using their HyperText Markup Language (HTML) attribute. The SmartAds class uses a timer to constantly check the vertical y-axis positions of all ad banners, and compares each one to the current scroll position of the web browser. If the users current viewable browser area has no visible banners the SmartAds class remains inactive and the ads that are below the fold do not load or animate. When the users scroll position is greater than the ad banner position, which means an ad would now be visible in the users current browser, the SmartAds class calls the banner's activate method, which should contain any initialization and animation code thus triggering the ad to animate. [0012]. checkAds: function ( ) { // check all ads in the ads Dictionary object for visibility var scroll_y = this.getScrollOffset( ); var len = this.ads.keys.length; for (var i=0; i < len; i++) { var ad_name = this.ads.keys[i]; if (!this.isActivated(ad_name)) { var ad = this.getAdRef(ad_name); if (ad) { var ad_pos = this.getPos(ad).y; if (ad_pos == 0) { ad_pos = this.getPos(ad.parentNode).y + ad.parentNode.scrollHeight; } var scroll_pos = this.getWindowHeight( ) + scroll_y; if (scroll_pos >= ad_pos + ad.scrollHeight) { // we found a visible ad, so tell it to activate this.activate(ad_name); } } } }; }, getAdRef: function (adName) { // try to get a DOM reference to the specified ad var ref = window.document[adName]; [Table 1][0031]); wherein the programming construct is a class constructor for an ad class (Bellinger teaches Ads may be constructed from an image, JavaScript program, or multimedia object using technologies like Java, Shockwave, or Flash, which often use animation, sound, or video to attract the user's attention [0005]. The ad scripting language file (e.g, SmartAds.js), is loaded. In one embodiment, having instantiated a SmartAds class instance, one or more ads can be added using the class's add method. As part of that method, banners are specified with this method using their HyperText Markup Language (HTML) attribute. The SmartAds class uses a timer to constantly check the vertical y-axis positions of all ad banners, and compares each one to the current scroll position of the web browser. If the users current viewable browser area has no visible banners the SmartAds class remains inactive and the ads that are below the fold do not load or animate [0012]), and wherein the identity is determined by searching for a name of the ad class (Bellinger teaches checkAds: function ( ) { // check all ads in the ads Dictionary object for visibility var scroll_y = this.getScrollOffset( ); var len = this.ads.keys.length; for (var i=0; i < len; i++) { var ad_name = this.ads.keys[i]; if (!this.isActivated(ad_name)) { var ad = this.getAdRef(ad_name); if (ad) { var ad_pos = this.getPos(ad).y; if (ad_pos == 0) { ad_pos = this.getPos(ad.parentNode).y + ad.parentNode.scrollHeight; } var scroll_pos = this.getWindowHeight( ) + scroll_y; if (scroll_pos >= ad_pos + ad.scrollHeight) { // we found a visible ad, so tell it to activate this.activate(ad_name); } } } }; }, getAdRef: function (adName) { // try to get a DOM reference to the specified ad var ref = window.document[adName]; [Table 1][0031]).
Therefore, it would have been obvious to one or ordinary skill in the art before the effective filing date of the claimed invention to modify the method and system disclosed by Wang to include upon launch of the application package, determining an identity of a programming construct used by the application during initialization, wherein the programming construct is a class constructor for an ad class, and wherein the identity is determined by searching for a name of the ad class as disclosed by Bellinger. One of ordinary skill in the art would have been motivated for the purpose of preventing advertising fraud.
Although Wang discloses “wherein the hardware processor is further configured for executing a hook for the identified programming construct to modify one or more values associated with the identified programming construct” (Wang [Col 12 lines 40-55]. The combination of Wang and Bellinger do not expressly teach but executing a hook for the identified programming construct to modify one or more values associated with the identified programming construct to a value that prevents at least one ad from being displayed in the application before returning the response to the call (Karanth teaches determining that the computing device prevents advertisements from being displayed at the computing device. Preventing requested content from being displayed at the computing device in response to determining that the computing device prevents advertisements from being displayed [0006]. Determine whether a requesting computing device is blocking advertisements from display, advertisement detector component 210 determines whether computing device 102 successfully downloaded a first content segment from content provider 120 [0052]. Ad-blocking software may be configured to intercept the manifest file for a requested piece of content and remove or modify any of the advertisement segments or advertisement insertion instructions before passing the manifest file to a content viewer of computing device [0053][0056]).
Therefore, it would have been obvious to one or ordinary skill in the art before the effective filing date of the claimed invention to modify the executing a hook for the identified programming construct to modify one or more values associated with the identified programming construct disclosed by Wang to a value that prevents at least one ad from being displayed in the application before returning the response to the call. One of ordinary skill in the art would have been motivated for the purpose of prevent display of advertisements associated with requested content (Karanth [0025]).
As to claim 40
The combination of Wang, Bellinger and Karanth disclose the computing device of claim 38.
In addition, Wang discloses:
wherein the computing device is an Android®-based mobile device and the virtual container executes in the Android® operating system. (Wang fig. 1 “mobile device 102”; col. 12, ll. 33-43 "Underneath the hood, whenever an app is started, Android forks off a new virtual machine. [ ... ] Individual class methods can be hooked, allowing injected code to be executed prior to a base method calls, following the completion of the base method call, or in place of the base method"] The base method call as disclosed corresponds to the initialisation as claimed.)
As to claim 42.
The combination of Wang, Bellinger and Karanth disclose the computing device of claim 41.
In addition, Wang discloses:
wherein the hook is enabled using the Xposed® framework for Android®. ( Wang col. 12, ll. 33-37 "Underneath the hood, whenever an app is started, Android forks off a new virtual machine. The Android Xposed framework allows additional overriding library routines to be inserted into the Java classpath, prior to the execution of the new virtual machines.")
As to claim 44
The combination of Wang, Bellinger, and Karanth teach the computing device of claim 43.
Bellinger further teaches wherein the class constructor includes at least one parameter that modify the ad (Bellinger teaches a SmartAds class instance, one or more ads can be added using the class's add method [0012]).
Therefore, it would have been obvious to one or ordinary skill in the art before the effective filing date of the claimed invention to modify the method and system disclosed by Wang to include upon launch of the application package, determining an identity of a programming construct used by the application during initialization, wherein the programming construct is a class constructor for an ad class, and wherein the identity is determined by searching for a name of the ad class as disclosed by Bellinger. One of ordinary skill in the art would have been motivated for the purpose of preventing advertising fraud.
Wang-Bellinger do not explicitly teach but Karanth teaches wherein the at least one parameter is changed using the hook to a different value that causes ads provided by the ad class to be blocked in the application (Karanth teaches determining that the computing device prevents advertisements from being displayed at the computing device. Preventing requested content from being displayed at the computing device in response to determining that the computing device prevents advertisements from being displayed [0006]. Determine whether a requesting computing device is blocking advertisements from display, advertisement detector component 210 determines whether computing device 102 successfully downloaded a first content segment from content provider 120 [0052]. Ad-blocking software may be configured to intercept the manifest file for a requested piece of content and remove or modify any of the advertisement segments or advertisement insertion instructions before passing the manifest file to a content viewer of computing device [0053][0056]).
Therefore, it would have been obvious to one or ordinary skill in the art before the effective filing date of the claimed invention to modify the executing a hook for the identified programming construct to modify one or more values associated with the identified programming construct disclosed by Wang to a value that prevents at least one ad from being displayed in the application before returning the response to the call as disclosed by Karanth. One of ordinary skill in the art would have been motivated for the purpose of prevent display of advertisements associated with requested content (Karanth [0025]).
As to claim 50
Claim 50 is a method claim reciting similar limitations to claim 38, it is therefore rejected with the same rationale and motivation applied to claim 38 above.
Claims 39, 45, 48, 51, 54 and 58 are rejected under 35 U.S.C. 103 as being unpatentable over Wang et al. US 10,025,952 B1 hereafter Wang in view of Bellinger (US 20120209725) in view of Karanth et al. (US 20170337600, hereinafter Karanth) and in further view of Hamer US 20180121648 A1 hereafter Hamer.
As to Claim 39
The combination of Wang, Bellinger and Karanth discloses the computing device of claim 38. The combination of Wang-Bellinger-Karanth do not explicitly teach but Hamer teaches wherein the identity of the programming construct is determined by analyzing a signature of the programming construct (Hamer teaches the instrumentation determination engine 121 may determine whether the function comprises a constructor in a constructor list by comparing information about the constructor (e.g., a signature of the constructor) with corresponding information for each construction in a set of constructors of the constructor list. The instrumentation determination engine 121 may determine that the function should be instrumented responsive to determining that the function comprises a constructor in the constructor list [0032]).
Therefore, it would have been obvious to one or ordinary skill in the art before the effective filing date of the claimed invention to modify the method and system disclosed by Wang to include wherein the identity of the programming construct is determined by analyzing a signature of the programming construct as disclosed by Hamer. Such an addition uses known methods of identifying a constructor by its parameters. Every programming language supporting overloaded constructors differentiates constructors based on their parameters. Thus, a well-result is produced in being able to select the correct constructor based on the parameters given.
As to claim 45
The combination of Wang, Bellinger and Karanth disclose the computing device of claim 38.
The combination of Wang-Bellinger-Karanth do not explicitly teach but Hamer teaches wherein the identity of the ad class is determined by analyzing a constructor signature of a call to the class constructor to find a match of parameters of the call to the class constructor. (Hamer 0032, “The instrumentation determination engine 121 may determine whether the function comprises a constructor in a constructor list by comparing information about the constructor (e.g., a signature of the constructor) with corresponding information for each construction in a set of constructors of the constructor list. The instrumentation determination engine 121 may determine that the function should be instrumented responsive to determining that the function comprises a constructor in the constructor list.”)
The rationale to combine is given in claim 39 above.
As to Claim 48
The combination of Wang, Bellinger and Karanth disclose the computing device of claim 46.
The combination of Wang-Bellinger-Karanth do not explicitly teach but Hamer teaches wherein searching for the name of the ad class includes determining a list of all existing class names and checking against said list of existing class names. (Hamer 0032, “The instrumentation determination engine 121 may determine whether the function comprises a constructor in a constructor list by comparing information about the constructor (e.g., a signature of the constructor [i.e. a constructor signature is the constructor name followed by the parameter list which is a list of the types of the parameters and the variable names used to refer to them in the constructor.]) with corresponding information for each construction in a set of constructors of the constructor list. The instrumentation determination engine 121 may determine that the function should be instrumented responsive to determining that the function comprises a constructor in the constructor list.”)
The rationale to combine is given in claim 39 above.
As to claim 51
The rejection of claim 50 is incorporated. Claim 51 is a method claim reciting similar limitations to claim 39, it is therefore rejected with the same rationale and motivation applied to claim 39 above.
As to claim 54
Wang-Bellinger-Karanth disclose the method of claim 53.
The combination of Wang-Bellinger-Karanth do not explicitly teach but Hamer teaches wherein the identity of the ad class is determined by analyzing a constructor signature of a call to the class constructor to find a match of parameters of the call to the class constructor. (Hamer 0032, “The instrumentation determination engine 121 may determine whether the function comprises a constructor in a constructor list by comparing information about the constructor (e.g., a signature of the constructor) with corresponding information for each construction in a set of constructors of the constructor list. The instrumentation determination engine 121 may determine that the function should be instrumented responsive to determining that the function comprises a constructor in the constructor list.”)
The rationale to combine is given in claim 39 above.
As to claim 58
Re. claim 58, rejection of claim 53 is included and claim 58 is rejected with the same rationale as applied in claim 44 above.
Claim 47 and 56 are rejected under 35 U.S.C. 103 as being unpatentable over Wang in view of Bellinger in further view of Karanth and in further view of Tatourian US 20160191512 A1 hereafter Tatourian.
As to claim 47
The combination of Wang-Bellinger-Karanth disclose the computing device of claim 46.
The combination of Wang-Bellinger-Karanth do not expressly disclose:
wherein searching for the name of the ad class includes a brute-force check of each possible name of the ad class until a match is found, wherein the brute-force check of each possible name is performed using heuristics for optimization.
However, in a similar art Tatourian teaches:
wherein searching for the name of the ad class includes a brute-force check of each possible name of the ad class until a match is found, wherein the brute-force check of each possible name is performed using heuristics for optimization. (Tatourian 0014, it became trivial for modern computers to “brute force” such passwords by guessing every single combination. Furthermore, the search space could be reduced with so-called “dictionary attacks.” In a dictionary attack, an attacker uses a dictionary of thousands or millions of English words to search for matches, which further reduces the search space. Finally, the use of personally-relevant data, such as a mother's maiden name or the name of a favorite pet, made passwords even easier for attackers to guess.)
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to use the brute-force search of passwords in Tatourian to find the names of constructors. In addition, it would have been obvious to use a heuristic for search optimization such as a dictionary of known constructor names. A brute-force search is the most basic of all searches and is exhaustive of all possibilities. It therefore is a known method that produces a predictable result of finding the desired name. Similarly, a dictionary of known words used before a brute-force search can greatly speed up the search. Therefore, both additions combine prior art in a way that yields predictable results.
As to claim 56
Wang-Bellinger-Karanth disclose the computing device of claim 55.
Wang-Bellinger-Karanth do not expressly disclose:
wherein searching for the name of the ad class includes a brute-force check of each possible name of the ad class until a match is found, wherein the brute-force check of each possible name is performed using heuristics for optimization.
However, in a similar art Tatourian teaches:
wherein searching for the name of the ad class includes a brute-force check of each possible name of the ad class until a match is found, wherein the brute-force check of each possible name is performed using heuristics for optimization. (Tatourian 0014, it became trivial for modern computers to “brute force” such passwords by guessing every single combination. Furthermore, the search space could be reduced with so-called “dictionary attacks.” In a dictionary attack, an attacker uses a dictionary of thousands or millions of English words to search for matches, which further reduces the search space. Finally, the use of personally-relevant data, such as a mother's maiden name or the name of a favorite pet, made passwords even easier for attackers to guess.)
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to use the brute-force search of passwords in Tatourian to find the names of constructors. In addition, it would have been obvious to use a heuristic for search optimization such as a dictionary of known constructor names. A brute-force search is the most basic of all searches and is exhaustive of all possibilities. It therefore is a known method that produces a predictable result of finding the desired name. Similarly, a dictionary of known words used before a brute-force search can greatly speed up the search. Therefore, both additions combine prior art in a way that yields predictable results.
Claim 49 and 57 are rejected under 35 U.S.C. 103 as being unpatentable over Wang in view of Bellinger in further view of Karanth and in further view of Kawamura et al. JP2007213487A hereafter Kawamura.
As to Claim 49
The combination of Wang-Bellinger-Karanth disclose the computing device of claim 46.
The combination of Wang-Bellinger-Karanth do not expressly disclose the following which
Kawamura teaches:
wherein once the identity of the ad class has been determined, (p.2 last paragraph, “the present invention reads out a class file used in a program to be developed from the first storage means”)the identity of the ad class is reported to an analytics tracker (p. 2 last paragraph, “order to achieve the above object, the aspect generation apparatus… analyzes the structures of each class in the class file.”) such that the identity of the ad class is available to other users through a sharing mechanism. (p. 2 last paragraph—p.3 first paragraph, Based on the analysis result … [a] user interface management means for displaying on the graphical user interface screen a class diagram in which a name and signature are clearly specified, … and signature candidate data selected by the user to the advice candidate data structure selected by the user.)
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to use an analytics tracker to server as an intermediary to disseminate ad classes to users as was done in Kawamura. Such an addition is a known method (using an intermediary program) producing a predictable result (to send users the aggregated data).
As to claim 57.
Wang, Hamer, Karanth, and Stack Overflow, disclose the method of claim 55.
Wang, Hamer, Karanth, and Stack Overflow do not expressly disclose the following which Kawamura teaches:
wherein once the identity of the ad class has been determined, (p.2 last paragraph, “the present invention reads out a class file used in a program to be developed from the first storage means”)the identity of the ad class is reported to an analytics tracker (p. 2 last paragraph, “order to achieve the above object, the aspect generation apparatus… analyzes the structures of each class in the class file.”) such that the identity of the ad class is available to other users through a sharing mechanism. (p. 2 last paragraph—p.3 first paragraph, Based on the analysis result … [a] user interface management means for displaying on the graphical user interface screen a class diagram in which a name and signature are clearly specified, … and signature candidate data selected by the user to the advice candidate data structure selected by the user.)
It would have been obvious to a person of ordinary skill in the art before the effective filing date of the claimed invention to use an analytics tracker to server as an intermediary to disseminate ad classes to users as was done in Kawamura. Such an addition is a known method (using an intermediary program) producing a predictable result (to send users the aggregated data).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
US 10467408 B1 discloses software to block ads and other content.
LIU XING ET AL: "Privacy Risk Analysis and Mitigation of Analytics Libraries in the Android Ecosystem", D5 IEEE TRANSACTIONS ON MOBILE COMPUTING, IEEE SERVICE CENTER, LOS ALAMITOS, CA, US, vol. 19, no. 5, 4 March 2019 (2019-03-04), pages 1184-1199 discloses analytics to block ads on an android system.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to KEVIN A AYALA whose telephone number is (571)270-3912. The examiner can normally be reached Monday-Thursday 8AM-5PM; Friday: Variable EST.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Jorge Ortiz-Criado can be reached at 571-272-7624. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/KEVIN AYALA/Primary Examiner, Art Unit 2496