Home | History | Annotate | Download | only in extensions
      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/renderer/extensions/notifications_native_handler.h"
      6 
      7 #include <string>
      8 
      9 #include "base/logging.h"
     10 #include "base/values.h"
     11 #include "chrome/common/extensions/api/notifications/notification_style.h"
     12 #include "chrome/renderer/extensions/chrome_v8_context.h"
     13 #include "content/public/renderer/v8_value_converter.h"
     14 #include "ui/base/layout.h"
     15 
     16 namespace extensions {
     17 
     18 NotificationsNativeHandler::NotificationsNativeHandler(ScriptContext* context)
     19     : ObjectBackedNativeHandler(context) {
     20   RouteFunction(
     21       "GetNotificationImageSizes",
     22       base::Bind(&NotificationsNativeHandler::GetNotificationImageSizes,
     23                  base::Unretained(this)));
     24 }
     25 
     26 void NotificationsNativeHandler::GetNotificationImageSizes(
     27     const v8::FunctionCallbackInfo<v8::Value>& args) {
     28   NotificationBitmapSizes bitmap_sizes = GetNotificationBitmapSizes();
     29 
     30   float scale_factor =
     31       ui::GetScaleForScaleFactor(ui::GetSupportedScaleFactors().back());
     32 
     33   scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
     34   dict->SetDouble("scaleFactor", scale_factor);
     35   dict->SetInteger("icon.width", bitmap_sizes.icon_size.width());
     36   dict->SetInteger("icon.height", bitmap_sizes.icon_size.height());
     37   dict->SetInteger("image.width", bitmap_sizes.image_size.width());
     38   dict->SetInteger("image.height", bitmap_sizes.image_size.height());
     39   dict->SetInteger("buttonIcon.width", bitmap_sizes.button_icon_size.width());
     40   dict->SetInteger("buttonIcon.height", bitmap_sizes.button_icon_size.height());
     41   dict->SetInteger("appIconMask.width",
     42                    bitmap_sizes.app_icon_mask_size.width());
     43   dict->SetInteger("appIconMask.height",
     44                    bitmap_sizes.app_icon_mask_size.height());
     45 
     46   scoped_ptr<content::V8ValueConverter> converter(
     47       content::V8ValueConverter::create());
     48   args.GetReturnValue().Set(
     49       converter->ToV8Value(dict.get(), context()->v8_context()));
     50 }
     51 
     52 }  // namespace extensions
     53