1 // Copyright 2014 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 5 #include "chrome/browser/extensions/api/synced_notifications_private/synced_notifications_private_api.h" 6 7 #include "chrome/browser/extensions/api/synced_notifications_private/synced_notifications_shim.h" 8 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service.h" 9 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service_factory.h" 10 #include "chrome/browser/profiles/profile.h" 11 12 namespace extensions { 13 namespace api { 14 15 namespace { 16 const char kSyncNotRunningError[] = "Sync Not Running"; 17 const char kDataConversionError[] = "Data Conversion Error"; 18 } // namespace 19 20 SyncedNotificationsPrivateGetInitialDataFunction:: SyncedNotificationsPrivateGetInitialDataFunction()21 SyncedNotificationsPrivateGetInitialDataFunction() { 22 } 23 24 SyncedNotificationsPrivateGetInitialDataFunction:: ~SyncedNotificationsPrivateGetInitialDataFunction()25 ~SyncedNotificationsPrivateGetInitialDataFunction() { 26 } 27 28 ExtensionFunction::ResponseAction Run()29SyncedNotificationsPrivateGetInitialDataFunction::Run() { 30 scoped_ptr<api::synced_notifications_private::GetInitialData::Params> params( 31 api::synced_notifications_private::GetInitialData::Params::Create( 32 *args_)); 33 EXTENSION_FUNCTION_VALIDATE(params.get()); 34 35 notifier::ChromeNotifierService* notifier_service = 36 notifier::ChromeNotifierServiceFactory::GetForProfile( 37 Profile::FromBrowserContext(browser_context()), 38 Profile::IMPLICIT_ACCESS); 39 if (!notifier_service || 40 !notifier_service->GetSyncedNotificationsShim()->IsSyncReady()) { 41 return RespondNow(Error(kSyncNotRunningError)); 42 } 43 44 std::vector<linked_ptr<synced_notifications_private::SyncData> > 45 sync_data_list; 46 if (!notifier_service->GetSyncedNotificationsShim()->GetInitialData( 47 params->type, &sync_data_list)) { 48 return RespondNow(Error(kSyncNotRunningError)); 49 } 50 return RespondNow(ArgumentList( 51 synced_notifications_private::GetInitialData::Results::Create( 52 sync_data_list))); 53 } 54 55 SyncedNotificationsPrivateUpdateNotificationFunction:: SyncedNotificationsPrivateUpdateNotificationFunction()56 SyncedNotificationsPrivateUpdateNotificationFunction() { 57 } 58 59 SyncedNotificationsPrivateUpdateNotificationFunction:: ~SyncedNotificationsPrivateUpdateNotificationFunction()60 ~SyncedNotificationsPrivateUpdateNotificationFunction() { 61 } 62 63 ExtensionFunction::ResponseAction Run()64SyncedNotificationsPrivateUpdateNotificationFunction::Run() { 65 scoped_ptr<api::synced_notifications_private::UpdateNotification::Params> 66 params( 67 api::synced_notifications_private::UpdateNotification::Params::Create( 68 *args_)); 69 EXTENSION_FUNCTION_VALIDATE(params.get()); 70 71 notifier::ChromeNotifierService* notifier_service = 72 notifier::ChromeNotifierServiceFactory::GetForProfile( 73 Profile::FromBrowserContext(browser_context()), 74 Profile::IMPLICIT_ACCESS); 75 if (!notifier_service || 76 !notifier_service->GetSyncedNotificationsShim()->IsSyncReady()) { 77 return RespondNow(Error(kSyncNotRunningError)); 78 } 79 80 if (!notifier_service->GetSyncedNotificationsShim()->UpdateNotification( 81 params->changed_notification)) { 82 return RespondNow(Error(kDataConversionError)); 83 } 84 85 return RespondNow(NoArguments()); 86 } 87 88 SyncedNotificationsPrivateSetRenderContextFunction:: SyncedNotificationsPrivateSetRenderContextFunction()89 SyncedNotificationsPrivateSetRenderContextFunction() { 90 } 91 92 SyncedNotificationsPrivateSetRenderContextFunction:: ~SyncedNotificationsPrivateSetRenderContextFunction()93 ~SyncedNotificationsPrivateSetRenderContextFunction() { 94 } 95 96 ExtensionFunction::ResponseAction Run()97SyncedNotificationsPrivateSetRenderContextFunction::Run() { 98 scoped_ptr<api::synced_notifications_private::SetRenderContext::Params> 99 params( 100 api::synced_notifications_private::SetRenderContext::Params::Create( 101 *args_)); 102 EXTENSION_FUNCTION_VALIDATE(params.get()); 103 104 notifier::ChromeNotifierService* notifier_service = 105 notifier::ChromeNotifierServiceFactory::GetForProfile( 106 Profile::FromBrowserContext(browser_context()), 107 Profile::IMPLICIT_ACCESS); 108 if (!notifier_service || 109 !notifier_service->GetSyncedNotificationsShim()->IsSyncReady()) { 110 return RespondNow(Error(kSyncNotRunningError)); 111 } 112 113 if (!notifier_service->GetSyncedNotificationsShim()->SetRenderContext( 114 params->refresh, 115 params->data_type_context)) { 116 return RespondNow(Error(kDataConversionError)); 117 } 118 return RespondNow(NoArguments()); 119 } 120 121 } // namespace api 122 } // namespace extensions 123