1 // Copyright 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 package org.chromium.components.search_engines; 5 6 import org.chromium.base.annotations.CalledByNative; 7 import org.chromium.base.annotations.NativeMethods; 8 9 import java.util.Locale; 10 11 /** 12 * Represents object of a search engine. It only caches the native pointer of TemplateURL object 13 * from native side. Any class uses this need to register a {@link TemplateUrlServiceObserver} on 14 * {@link TemplatUrlService} to listen the native changes in case the native pointer is destroyed. 15 */ 16 public class TemplateUrl { 17 private final long mTemplateUrlPtr; 18 19 @CalledByNative create(long templateUrlPtr)20 private static TemplateUrl create(long templateUrlPtr) { 21 return new TemplateUrl(templateUrlPtr); 22 } 23 TemplateUrl(long templateUrlPtr)24 protected TemplateUrl(long templateUrlPtr) { 25 mTemplateUrlPtr = templateUrlPtr; 26 } 27 28 /** 29 * @return The name of the search engine. 30 */ getShortName()31 public String getShortName() { 32 return TemplateUrlJni.get().getShortName(mTemplateUrlPtr); 33 } 34 35 /** 36 * @return The prepopulated id of the search engine. For predefined engines, this field is a 37 * non-zero, for custom search engines, it will return 0. 38 */ getPrepopulatedId()39 public int getPrepopulatedId() { 40 return TemplateUrlJni.get().getPrepopulatedId(mTemplateUrlPtr); 41 } 42 43 /** 44 * @return Whether a search engine is prepopulated or created by policy. 45 */ getIsPrepopulated()46 public boolean getIsPrepopulated() { 47 return TemplateUrlJni.get().isPrepopulatedOrCreatedByPolicy(mTemplateUrlPtr); 48 } 49 50 /** 51 * @return The keyword of the search engine. 52 */ getKeyword()53 public String getKeyword() { 54 return TemplateUrlJni.get().getKeyword(mTemplateUrlPtr); 55 } 56 57 /** 58 * @return The last time used this search engine. If a search engine hasn't been used, it will 59 * return 0. 60 */ getLastVisitedTime()61 public long getLastVisitedTime() { 62 return TemplateUrlJni.get().getLastVisitedTime(mTemplateUrlPtr); 63 } 64 65 /** 66 * @return The template URL of the search engine. The format can be looked up in 67 * prepopulated_engines.json. 68 */ getURL()69 public String getURL() { 70 return TemplateUrlJni.get().getURL(mTemplateUrlPtr); 71 } 72 73 @Override equals(Object other)74 public boolean equals(Object other) { 75 if (!(other instanceof TemplateUrl)) return false; 76 TemplateUrl otherTemplateUrl = (TemplateUrl) other; 77 return mTemplateUrlPtr == otherTemplateUrl.mTemplateUrlPtr; 78 } 79 80 @Override toString()81 public String toString() { 82 return String.format(Locale.US, 83 "TemplateURL -- keyword: %s, short name: %s, " 84 + "prepopulated: %b", 85 getKeyword(), getShortName(), getIsPrepopulated()); 86 } 87 88 @NativeMethods 89 public interface Natives { getShortName(long templateUrlPtr)90 String getShortName(long templateUrlPtr); getKeyword(long templateUrlPtr)91 String getKeyword(long templateUrlPtr); isPrepopulatedOrCreatedByPolicy(long templateUrlPtr)92 boolean isPrepopulatedOrCreatedByPolicy(long templateUrlPtr); getLastVisitedTime(long templateUrlPtr)93 long getLastVisitedTime(long templateUrlPtr); getPrepopulatedId(long templateUrlPtr)94 int getPrepopulatedId(long templateUrlPtr); getURL(long templateUrlPtr)95 String getURL(long templateUrlPtr); 96 } 97 } 98