Browse Source

添加检测页所需接口

adenlin0812 3 months ago
parent
commit
6ca272138d

+ 21 - 0
extensions/browser/api/wisdom_svc/wisdom_svc_api.cc

@@ -5,10 +5,13 @@
 
 #include "base/base64.h"
 #include "base/command_line.h"
+#include "base/functional/bind.h"
+#include "base/functional/callback.h"
 #include "base/json/json_reader.h"
 
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/sessions/session_restore.h"
+#include "chrome/browser/sessions/session_service_factory.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
 
@@ -115,5 +118,23 @@ ExtensionFunction::ResponseAction WisdomSvcRestoreTabsFunction::Run() {
   return RespondNow(NoArguments());
 }
 
+// WisdomSvcGetLastSessionTabsCountFunction
+ExtensionFunction::ResponseAction
+WisdomSvcGetLastSessionTabsCountFunction::Run() {
+  Profile* profile = Profile::FromBrowserContext(browser_context());
+  SessionServiceBase* service =
+      SessionServiceFactory::GetForProfileForSessionRestore(profile);
+  service->GetLastSession(base::BindOnce(
+      &WisdomSvcGetLastSessionTabsCountFunction::OnGotLastSession, this));
+
+  return RespondLater();
+}
+
+void WisdomSvcGetLastSessionTabsCountFunction::OnGotLastSession(
+    std::vector<std::unique_ptr<sessions::SessionWindow>> sessionWindows,
+    SessionID sessionId,
+    bool no_use) {
+  Respond(WithArguments((int)sessionWindows.size()));
+}
 
 }  // namespace extensions

+ 25 - 0
extensions/browser/api/wisdom_svc/wisdom_svc_api.h

@@ -3,6 +3,8 @@
 
 #include "extensions/browser/extension_function.h"
 
+#include "components/sessions/core/session_types.h"
+
 namespace extensions {
 
 class WisdomSvcPrintFunction : public ExtensionFunction {
@@ -54,6 +56,29 @@ class WisdomSvcRestoreTabsFunction : public ExtensionFunction {
   ResponseAction Run() override;
 };
 
+class WisdomSvcGetLastSessionTabsCountFunction : public ExtensionFunction {
+ public:
+  WisdomSvcGetLastSessionTabsCountFunction() = default;
+  WisdomSvcGetLastSessionTabsCountFunction(
+      const WisdomSvcGetLastSessionTabsCountFunction&) = delete;
+  WisdomSvcGetLastSessionTabsCountFunction& operator=(
+      const WisdomSvcGetLastSessionTabsCountFunction&) = delete;
+  DECLARE_EXTENSION_FUNCTION("wisdomSvc.getLastSessionTabsCount",
+                             WISDOM_SVC_GET_LAST_SESSION_TABS_COUNT)
+
+ protected:
+  ~WisdomSvcGetLastSessionTabsCountFunction() override = default;
+
+  // ExtensionFunction overrides.
+  ResponseAction Run() override;
+
+ private:
+  void OnGotLastSession(
+      std::vector<std::unique_ptr<sessions::SessionWindow>> sessionWindows,
+      SessionID sessionId,
+      bool no_use);
+};
+
 }  // namespace extensions
 
 #endif  // EXTENSIONS_BROWSER_API_WISDOM_SVC_WISDOM_SVC_API_H_

+ 1 - 0
extensions/browser/extension_function_histogram_value.h

@@ -1984,6 +1984,7 @@ enum HistogramValue {
   WISDOM_SVC_PRINT = 1922,
   WISDOM_SVC_BGS_DATA = 1923,
   WISDOM_SVC_RESTORE_TABS = 1924,
+  WISDOM_SVC_GET_LAST_SESSION_TABS_COUNT = 1925,
   // Last entry: Add new entries above, then run:
   // tools/metrics/histograms/update_extension_histograms.py
   ENUM_BOUNDARY

+ 2 - 0
extensions/common/api/wisdom_svc.idl

@@ -7,6 +7,7 @@ namespace wisdomSvc{
   };
   callback EchoStateCallback = void(DOMString out);
   callback BgsDataCallback = void(BgsData bgsData);
+  callback LastSessionTabsCountCallback = void(long tabsCount);
 
   dictionary BgsData {
     DOMString baseUrl;
@@ -18,5 +19,6 @@ namespace wisdomSvc{
     static void print(DOMString input, EchoStateCallback callback);
     static void getBgsData(BgsDataCallback callback);
     static void restoreTabs();
+    static void getLastSessionTabsCount(LastSessionTabsCountCallback callback);
   };
 };