(先日までのプラグイン調査の記録)
先日までの調査で WebkitPlugIn では目的とするプラグインの実現は難しそうなので、急遽 SIMBLの作り方を参考に独自のプラグインを作ることにした。なお先日紹介したブログで SIMBLを使わなくとも(トリッキーな方法で)目的のクラスをロードする方法が見つかったので、実装ではこの方法を利用してSafari用プラグインを作っていく。
今回は検証用のひな形プロジェクトを作る。
WebkitPlugIn の作法には従わないので今回は Xcode のテンプレートは "Cocoa Bundle" を選んだ。
Info.plist を開き、WebPlugin* 関連のエントリを追加する。"WebPluginMIMETypesFilename" で指定する plist ファイルは実在しない架空のファイル名を指定する(これがミソ)。また "Bundle OS Type code" を WebPlugInを示す "WBPL" に変更しておく。これを忘れるとプラグインとして認識されない。
"Principal Class" として PluginController を指定し、クラスを作っておく。
PluginController.h
#import <Cocoa/cocoa.h @interface PluginController : NSObject { }
PluginController.m
@implementation PluginController +(void)load { NSLog(@"+[PluginController load] was called"); } @end
+[load] がエントリポイントとなる。
ビルドして作成されたファイル SafariPlugInStudy.bundle を ~/Library/Internet Plugins/ へコピーし、Safariを再起動する。
コンソール.app を開きメッセージを確認する。
出た。